JavaScript正则表达式 - 两个[a-z]后跟三个[0-9]

时间:2010-12-02 11:36:51

标签: javascript regex string string-matching

我有一个简单的正则表达式:

[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 个答案:

答案 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来证明这一点。

This W3school tutorial推荐错误。

如果只需要小写字母,请使用[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

如果您的字符串包含多个单词,并且您尝试匹配一个单词。