Регулярное выражение 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}$