2014-02-04 2 views
0

У меня есть условие в моем javascript, которое используется для улавливания недействительного ввода данных. Последовательные буквы не допускаются, пробелы не допускаются, и я также не хочу разрешать какие-либо не-буквенно-цифровые символы. Кажется, это работает, но почему-то символ периода. не попадает не как альфа-число.Значок периода регулярного выражения

if ((/\s/.test(myVar)) || (/[A-Z]{2}/.test(myVar)) || (/^[A-Z0-9]+$/.test(myVar))) { 
     valid = false; 
} 
+1

'[AZ] {2} 'does * not * соответствует последовательным буквам. Он соответствует любой комбинации двух букв. – deceze

+1

Это очень странное испытание, которое вы там делаете. Третий тест вернет true для любой строки, которая состоит только из прописных букв и цифр. Похоже, вы перевернули условие. – Luaan

+0

@deceze Я должен перефразировать - тесты для двух последовательных буквенных символов. –

ответ

0

Я хотел бы сделать:

if (/[A-Z]{2}|[^A-Z0-9]/.test(myVar)) { 
    valid = false; 
} 
0

Ваши условия совершенно неправильные. @Deceze прекрасно объяснил, какие проверки вы фактически делаете, в отличие от того, что, по вашему мнению, вы делаете.

Первое регулярного выражения хорошо, но второй один должен быть такой:

/([A-Z])\1/ 

Вашего регулярное выражение соответствует любой два альфе, а не только два последовательных букв.

Третье условие тоже очень странно, попробуйте вместо этого:

/[^A-Z0-9]/ 

Обратите внимание, что это полностью исключает необходимость первой проверки - пробелы не альфы, ни цифр.

И, конечно, вы могли бы объединить оба этих тестов в одном тесте, но я оставлю это до вас :)

Смежные вопросы