предложить пользователю ввести строку, не содержащую специальных символов [@. ,!] Javascript - PullRequest
1 голос
/ 19 июня 2020

В моем коде проблема в том, что он сначала проверяет неправильный ввод, а затем сообщает пользователю, что нужно ввести снова, но когда пользователь снова вводит неправильный код, его проверка не выполняется и сообщает предупреждение «правильно в».

Напишите программу для ввода пользовательского ввода и сохранения имени пользователя в переменной. Если имя пользователя содержит какой-либо специальный символ из [@. ,!], предложите пользователю ввести действительное имя пользователя. Для кодов символов [@. Примечание: код ASCII! это 33 ASCII код, это 44 ASCII код. это 46 код ASCII @: 64

var userName=prompt("Enter your Input: ");
checkValidName(userName);
function checkValidName(un)
{
    var message;
    var split=[];
    var arr=[];
    for(var i=0;i<un.length;i++)
    {
        split[i]=un.split("&nbsp;");
        arr[i]=un.charCodeAt(i);
        if(arr[i]!=33||arr[i]!=44||arr[i]!=46||arr[i]!=64)
        {
                message="Correct User Name";
        }
        while(arr[i]==33||arr[i]==44||arr[i]==46||arr[i]==64)
        {
            alert("please enter a valid userName");                                                                                                                   
            userName=prompt("Enter your Input: ");
            split[i]=un.split("&nbsp;");
            arr[i]=un.charCodeAt(i);
            if(arr[i]!=33||arr[i]!=44||arr[i]!=46||arr[i]!=64)
            {
                message="correct in";
                break;
            }
        }

    }
    alert(message);
}

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Вместо того, чтобы спрашивать внутри функции, которая проверяет, я бы получил al oop, который использует эту функцию:

    var userName=prompt("Enter your Input: ");
    while (!checkValidName(userName)){
        alert("please enter a valid userName");   
        userName=prompt("Enter your Input: ");
    };

(Теперь вам нужно вернуть true или false в вашем checkValidName(userName) код)

РЕДАКТИРОВАТЬ: относительно самой функции, глядя на https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match Я думаю, вы можете использовать

const checkValidName = (username) => username.match(/[\@\.\,\!]/)===null;
0 голосов
/ 19 июня 2020

Я обнаружил, что проблема заключалась в вызове функции, потому что функция вызывается только один раз, но этот код хорошо работает без использования функции и проверяет пользователя, пока он не введет правильное значение

var userName=prompt("Enter your Input: ");
var message;
var split=[];
var arr=[];
for(var i=0;i<userName.length;i++)
{
    split[i]=userName.split("&nbsp;");
    arr[i]=userName.charCodeAt(i);
    if(arr[i]!=33||arr[i]!=44||arr[i]!=46||arr[i]!=64)
    {
            message="Correct User Name";
    }
    while(arr[i]==33||arr[i]==44||arr[i]==46||arr[i]==64)
    {
        alert("please enter a valid userName");                                                                                                                   
        userName=prompt("Enter your Input: ");
        for(var i=0;i<userName.length;i++)
        {
            split[i]=userName.split("&nbsp;");
            arr[i]=userName.charCodeAt(i);
            if(arr[i]!=33||arr[i]!=44||arr[i]!=46||arr[i]!=64)
            {
                break;
            }
        }
    }

}
alert(message);
...