为什么这个正则表达式会匹配?
我正在尝试扩展我的正则表达式知识,但我不知道为什么以下返回 true:
/[A-Z]{2}/.test("ABC")
// returns true
我明确地将 {2}
放入表达式中,这应该意味着只有两个大写字母完全匹配。
根据 http://www.regular-expressions.info/repeat.html:
省略逗号和 max 会告诉引擎精确重复令牌 min 次。
我在这里误解了什么?
I'm trying to enlarge my regexp knowledge but I have no clue why the following returns true:
/[A-Z]{2}/.test("ABC")
// returns true
I explicity put {2}
in the expression which should mean that only exactly two capital letters match.
According to http://www.regular-expressions.info/repeat.html:
Omitting both the comma and max tells the engine to repeat the token exactly min times.
What am I misunderstanding here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您必须使用
^
和$
锚定正则表达式以指示字符串的开头和结尾。您当前的正则表达式与字符串的“AB”部分匹配。
You must anchor the regex using
^
and$
to indicate the start and end of the string.Your current regex matches the "AB" part of the string.
它匹配
AB
,即ABC
的前两个字母。要进行整个匹配,请使用
^
和$
锚点:这会匹配恰好包含 2 个大写字母的整个字符串。
It's matching
AB
, the first two letters ofABC
.To do an entire match, use the
^
and$
anchors:This matches an entire string of exactly 2 capital letters.
您应该使用
^[AZ]{2}$
来仅匹配整个字符串而不是其中的一部分。在您的示例中,正则表达式匹配AB
- 这实际上是连续的两个大写字母。You should use
^[A-Z]{2}$
to match only the whole string rather than parts of it. In your sample, the regex matchesAB
- which are indeed two capital letters in a row.您的正则表达式中缺少
^
和$
字符 - 字符串的开头和结尾。因为它们缺少你的正则表达式说“2个字符”,而不是“只有两个字符”,所以它匹配你的字符串中的“AB”或“BC”......you are missing
^
and$
characters in your regexp - beginning of the string and end of the string. Because they are missing your regular expression says "2 characters", but not "only two characters", so its matching either "AB" or "BC" in your string...医生没有说谎:)
它说的是最短时间而不是最大时间
The doc don't lie :)
It says min times not max times