2014-12-15 4 views
3

Я создал регулярное выражение для проверки имени, где только «_», «-», «», «. " позволил.Regex не работает должным образом в javascript

Вот регулярное выражение:

^[a-zA-Z][a-zA-Z0-9\.\-_']{1,24}$ 

Проблема это его имя позволяет имея @, Check Fiddle demo:

var str = "[email protected]"; 
var str2 = "@@"; 
alert(str.match("^[a-zA-Z][a-zA-Z0-9\.\-_]{1,24}$"));//allowing why? 
alert(str2.match("^[a-zA-Z][a-zA-Z0-9\.\-_]{1,24}$"));//not allowing 

Ожидаемое: Имя, имеющие @ не должны допускать.

Примечание: Когда я проверил это регулярное выражение в https://regex101.com/#javascript его работы хорошо

+0

Используйте реестр ЭКГ. – thefourtheye

ответ

4

Не забудьте использовать регулярное выражение разделителем в Javascript:

alert(str.match(/^[a-zA-Z][a-zA-Z0-9\.\-_]{1,24}$/)); 

Или еще лучше:

alert(str.match(/^[a-zA-Z][\w'.-]{1,24}$/)); 

Updated JSFiddle

+1

Спасибо, что работает – Manwal

+0

Добро пожаловать, рад, что это сработало. – anubhava

-1

Я думаю, что это сделало бы то же самое:

str.match(/^\w{1,24}$/); 

Определение:

Параметр \ ш метасимволом используется для поиска текстового символа. Символ слова - символ из a-z, A-Z, 0-9, включая символ _ (подчеркивание).

+0

Вы разрешаете цифры в начале строки. – nhahtdh