正则表达式匹配确切的字符数?


76

我需要一个匹配任意三个大写字母的正则表达式,例如AAA或ABC或DKE。但是它不能匹配四个或更多,例如AAAA或ABCDEF或aBBB。

我的解决方案: ^([A-Z][A-Z][A-Z])$

问题

  1. 这个对吗?
  2. 还有另一种方法,只是为了学习吗?

@owlstead,我做到了,实际上,我显然设法自己得到了正确的答案。由于我是regex的新手,因此我需要进行交叉检查以确保我没有记错。
丹尼尔·斯科科

1
提出了问题,但我将再次阅读有关重复的部分,因为您也应该了解有关限制重复的信息
Maarten Bodewes 2013年

Answers:


114

您所拥有的是正确的,但这是更重要的:

^[A-Z]{3}$

知道了 而这两种应该是仅有的两种方法,对吗?是的,我确定是大写的。
Daniel Scocco 2013年

@DanielS-有或没有捕获组。是。
约瑟夫·席尔伯

6
@owlstead-这是一个非常有效的问题。OP显然正在学习,展示了他们在尝试什么,并寻求指导。现在的问题是非常中规中矩。为什么有人会关闭这个?
约瑟夫·席尔伯


@owlstead,我也对SO进行了研究,但没有发现与我的问题相同的内容,因此为什么决定发布。
丹尼尔·斯科科

19

您的解决方案是正确的,但是您的正则表达式中存在一些冗余。
也可以从以下正则表达式获得类似的结果:

^([A-Z]{3})$

{3}指示[A-Z]必须恰好出现3次。


1
感谢那。但是,答案与上一个人的答案相同,因此,我将他的答案作为正确的答案。
丹尼尔·斯科科

1
是的,我在发布答案后也注意到了这一点。好吧,我只是想提供帮助,因此,如果未将其标记为正确答案,这实际上并不重要。仍然感谢您的评论:)
Ali Shah Ahmed
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.