为什么这个正则表达式匹配?

时间:2011-03-12 19:34:24

标签: javascript regex pattern-matching

我正在尝试扩大我的正则表达式知识,但我不知道为什么以下内容返回true:

/[A-Z]{2}/.test("ABC")
// returns true

我明确地将{2}放在表达式中,这意味着只有两个大写字母匹配。

根据http://www.regular-expressions.info/repeat.html

  

省略逗号和最大值会告诉引擎完全重复令牌次数。

我在这里误解了什么?

5 个答案:

答案 0 :(得分:6)

您必须使用^$来锚定正则表达式,以指示字符串的开头和结尾。

/^[A-Z]{2}$/.test("ABC")
// returns false

您当前的正则表达式匹配字符串的“AB”部分。

答案 1 :(得分:1)

匹配ABABC的前两个字母。

要进行整场比赛,请使用^$锚点:

/^[A-Z]{2}$/.test("ABC")

这匹配整个正好2个大写字母的字符串。

答案 2 :(得分:1)

您应该使用^[A-Z]{2}$仅匹配整个字符串而不是部分字符串。在您的示例中,正则表达式匹配AB - 它们实际上是连续的两个大写字母。

答案 3 :(得分:1)

你的正则表达式中缺少^$个字符 - 字符串的开头和字符串的结尾。因为他们缺少你的正则表达式说“2个字符”,但不是“只有两个字符”,所以它匹配你的字符串中的“AB”或“BC”......

答案 4 :(得分:1)

文件不骗人。)

  

省略逗号和最大值会告诉引擎完全重复令牌次数。

它表示 min次不是最大次数