我正在尝试扩大我的正则表达式知识,但我不知道为什么以下内容返回true:
/[A-Z]{2}/.test("ABC")
// returns true
我明确地将{2}
放在表达式中,这意味着只有两个大写字母匹配。
根据http://www.regular-expressions.info/repeat.html:
省略逗号和最大值会告诉引擎完全重复令牌次数。
我在这里误解了什么?
答案 0 :(得分:6)
您必须使用^
和$
来锚定正则表达式,以指示字符串的开头和结尾。
/^[A-Z]{2}$/.test("ABC")
// returns false
您当前的正则表达式匹配字符串的“AB”部分。
答案 1 :(得分:1)
匹配AB
,ABC
的前两个字母。
要进行整场比赛,请使用^
和$
锚点:
/^[A-Z]{2}$/.test("ABC")
这匹配整个正好2个大写字母的字符串。
答案 2 :(得分:1)
您应该使用^[A-Z]{2}$
仅匹配整个字符串而不是部分字符串。在您的示例中,正则表达式匹配AB
- 它们实际上是连续的两个大写字母。
答案 3 :(得分:1)
你的正则表达式中缺少^
和$
个字符 - 字符串的开头和字符串的结尾。因为他们缺少你的正则表达式说“2个字符”,但不是“只有两个字符”,所以它匹配你的字符串中的“AB”或“BC”......
答案 4 :(得分:1)
文件不骗人。)
省略逗号和最大值会告诉引擎完全重复令牌次数。
它表示 min次不是最大次数