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

发布于 2024-10-21 12:04:17 字数 387 浏览 5 评论 0原文

我正在尝试扩展我的正则表达式知识,但我不知道为什么以下返回 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

帅的被狗咬 2024-10-28 12:04:17

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

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

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

You must anchor the regex using ^ and $ to indicate the start and end of the string.

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

Your current regex matches the "AB" part of the string.

凉宸 2024-10-28 12:04:17

它匹配 AB,即 ABC 的前两个字母。

要进行整个匹配,请使用 ^$ 锚点:

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

这会匹配恰好包含 2 个大写字母的整个字符串。

It's matching AB, the first two letters of ABC.

To do an entire match, use the ^ and $ anchors:

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

This matches an entire string of exactly 2 capital letters.

别挽留 2024-10-28 12:04:17

您应该使用 ^[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 matches AB - which are indeed two capital letters in a row.

难理解 2024-10-28 12:04:17

您的正则表达式中缺少 ^$ 字符 - 字符串的开头和结尾。因为它们缺少你的正则表达式说“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...

饭团 2024-10-28 12:04:17

医生没有说谎:)

省略逗号和 max 会告诉引擎精确重复令牌 min 次。

它说的是最短时间而不是最大时间

The doc don't lie :)

Omitting both the comma and max tells the engine to repeat the token exactly min times.

It says min times not max times

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文