Регулярное выражение JavaScript-два [a-z], за которыми следуют только три [0-9]
У меня есть простое регулярное выражение:
[A-z]{2}[0-9]{3})$/g внутри следующее:
regForm.submit(function(){
if ($.trim($('#new-usr').val()).match(/([A-z]{2}[0-9]{3})$/g)) {
alert('No');
return false;
}
});
Это правильно читать, что что-то вроде 'ab123' дает предупреждение и 'ab1234' не делает. однако 'abc123' все еще бросает предупреждение. Мне это нужно, чтобы он только бросал сигнал тревоги, когда это всего лишь 2 буквы, за которыми следуют три цифры.
3 ответа:
Попробуйте вместо этого
/^[A-z]{2}[0-9]{3}$/g.Необходимо указать, что вся строка должна быть сопоставлена. В противном случае вы получите выделенную часть, соответствующую: abc123.
(я опустил
Кстати, вы уверены, что хотите(), потому что вам на самом деле не нужна группа.)[A-z], а не просто[A-Za-z]?
Класс символов
[A-z], вероятно, не то, что вам нужно.Почему?
Класс символов
[A-z]соответствует некоторым неалфавитным символам, таким как[,]среди прочих.JS fiddle link чтобы доказать это.
Этот учебник W3school рекомендует его неправильно.
Если вам нужны только строчные буквы, используйте
[a-z]
Если вам нужны только прописные буквы, используйте[A-Z]
Если вам нужно и то и другое, используйте:[a-zA-Z]Если вы хотите сопоставить строку, если она содержит 2 буквы, за которыми следуют 3 цифры в любом месте в строке, просто удалите конец якоря
$из вашего шаблона:[a-z]{2}[0-9]{3}Если вы хотите сопоставить строку, если она содержит 2 буквы, за которыми следуют 3 цифры и ничего больше , Используйте как начальный якорь
^, так и конечный якорь$как^[a-z]{2}[0-9]{3}$