Javascript форма проверки почтового адреса с регулярным выражением не работает! - PullRequest
0 голосов
/ 09 июля 2011

Здравствуйте, у меня есть вопрос с проверкой формы javascript и регулярными выражениями. Ниже приведен код, который я использовал. Я пытаюсь проверить, что адрес имеет номер и букву из алфавита. Этот код предназначен для экспериментов и не требует какой-либо ультра-безопасной проверки.

Проблема в том, что приведенный ниже код не работает. Независимо от того, что я делаю, окно оповещения говорит мне, что я должен ввести действительный адрес. Что случилось. Разве регулярное выражение не ищет значение и не находит ложь? Даже если я введу обычный адрес, такой как 123 Sky Rd. это все еще выводит Пожалуйста, введите действительный адрес.

Надеюсь, мой вопрос понятен. Ниже приведен код, чтобы действительно уточнить, что происходит. Почему это недействительно?

 if (document.customerInfo.address.value == ""){
        msg += "Please enter a valid address\n";
        }
    else if (document.customerInfo.address.value.match(/[0-9]/) != true)
            {msg += "Please enter a valid address\n";}
    else (document.customerInfo.address.value.match(/[abc]/) != true)
            {msg += "Please enter a valid address\n";}

Ответы [ 4 ]

2 голосов
/ 09 июля 2011

Этот код неверен по нескольким причинам. Во-первых, match () не возвращает true или false. Возвращает ноль или массив совпадений. Во-вторых, ваше регулярное выражение ищет либо строку всех чисел, либо строку всех символов, и у вас есть строка обоих (включая пробелы).

Что вы действительно пытаетесь проверить?

Одно регулярное выражение / [a-zA-Z0-9] + / позволит использовать цифры, буквы и пробелы, но я не знаю, почему вы это даже проверяете. Адрес не может быть проверен таким образом. Вы можете убедиться, что поле не пустое, но адреса могут принимать любые формы, включая такие символы, как #, как в Suite # 100. Я думаю, что все, что вы действительно можете сделать, это проверить, что оно не пустое.

0 голосов
/ 09 июля 2011

Попробуйте это регулярное выражение:

if (document.customerInfo.address.value == ""){
    msg += "Please enter a valid address\n";
}
else if (document.customerInfo.address.value.match/[a-zA-Z0-9 ]+/) == null) {
    msg += "Please enter a valid address\n";
}

Вы соответствуете только одному символу и только нижнему регистру [a-z].«+» Указывает один или несколько.

0 голосов
/ 09 июля 2011

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

Измените код на

if (document.customerInfo.address.value == ""){
    msg += "Please enter a valid address\n";
    }
else if (document.customerInfo.address.value.match(/[0-9]/) != true)
        {msg += "Please enter a valid address\n";}
else if (document.customerInfo.address.value.match(/[abc]/) != true)
        {msg += "Please enter a valid address\n";}
0 голосов
/ 09 июля 2011

Попробуйте ([0-9]) и ([a-z])

if (document.customerInfo.address.value == ""){
        msg += "Please enter a valid address\n";
        }
    else if (document.customerInfo.address.value.match(/([0-9])/) != true)
            {msg += "Please enter a valid address\n";}
    else (document.customerInfo.address.value.match(/([a-z])/) != true)
            {msg += "Please enter a valid address\n";}
...