11

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

[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 个字母后跟三个数字时才会发出警报。

4

3 回答 3

16

试试/^[A-z]{2}[0-9]{3}$/g吧。

您需要指定需要匹配整个字符串。否则,您将获得匹配的突出显示部分: a bc123

(我省略了()'s,因为您并不需要该组。)

顺便说一句,你确定你想要[A-z]而不只是[A-Za-z]

于 2010-12-02T11:40:33.797 回答
7

字符类[A-z]可能不是您需要的。

为什么?

字符类[A-z]匹配一些非字母字符[]例如 等。

JS小提琴链接来证明这一点。

这个 W3school 教程不正确地推荐它。

如果您只需要小写字母,请使用[a-z]
如果您只需要大写字母,请使用[A-Z]
如果您需要两个都使用:[a-zA-Z]

如果要匹配一个字符串,如果它在字符串中的任何位置有 2 个字母后跟 3 个数字,只需从模式中删除结束锚$

[a-z]{2}[0-9]{3}

如果你想匹配一个字符串,如果它有 2 个字母后跟 3 个数字并且没有其他任何东西,请同时使用开始锚点^和结束锚点$作为

^[a-z]{2}[0-9]{3}$
于 2010-12-02T11:40:08.890 回答
1

或者,您可以使用:

/\b([A-z]{2}[0-9]{3})\b/g

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

于 2010-12-02T11:49:00.763 回答