我有一个简单的正则表达式:
[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个字母后跟三个数字时它才会发出警报。
答案 0 :(得分:11)
请尝试/^[A-z]{2}[0-9]{3}$/g
。
您需要指定需要匹配整个字符串。否则,您将获得匹配的突出显示部分:a bc123 。
(我省略了()
,因为你真的不需要这个组。)
[A-z]
而不只是[A-Za-z]
吗?
答案 1 :(得分:7)
字符类[A-z]
可能不是您需要的。
为什么?
字符类[A-z]
会匹配一些非字母字符,例如[
,]
等。
JS fiddle link来证明这一点。
如果只需要小写字母,请使用[a-z]
如果您只需要大写字母,请使用[A-Z]
如果您同时需要使用:[a-zA-Z]
如果您希望匹配字符串,如果字符串中有2个字母后跟3个数字任何地方,只需从您的模式中删除结束锚$
:
[a-z]{2}[0-9]{3}
如果你想匹配一个字符串,如果它有2个字母后跟3个数字而没有别的使用start anchor ^
和end anchor $
as
^[a-z]{2}[0-9]{3}$
答案 2 :(得分:1)
或者您也可以使用:
/\b([A-z]{2}[0-9]{3})\b/g
如果您的字符串包含多个单词,并且您尝试匹配一个单词。