2012-11-12 67 views
2

我想用正则表达式验证字母为A-ZAA-ZZ,AAA-ZZZ等字符串。我知道[A-Z]会验证第一种情况,但其他情况如何。正则表达式验证带有重复的字母范围

A, B, C, D, E, .... Z 

AA, BB, CC, DD, EE, .... ZZ 

AAA, BBB, CCC, DDD, EEE, ... ZZZ 

等等...

+2

你能举出更多应该匹配并且不应该匹配的字符串示例吗?你知道正则表达式'[A-Z]'的含义吗?特别是它*不匹配字符串'“A-Z”'。 –

+1

模式“AB”是否匹配? –

+0

不,它不匹配 –

回答

2

您可以使用反向引用,如果你的正则表达式引擎支持它:

^([A-Z])\1*$ 
+0

这很好。 –

+0

@MikeFlynn,不客气。 –

+0

其实它不适用于“A”。 –

5

这是写一个痛苦,但如果你想匹配任何数量的字母,并要求他们对所有相同的信,你可以使用这样的:通过其余

^(A+|B+|C+|D+ ...)$ 

等字母表。

+2

这可以通过反向参考来改进:^([A-Z])\ 1 + $ –

+1

“改进”是一个有趣的说法。 ;-)如果你使用反向引用,它不再是一个真正的正则表达式,所以有些实现不会处理它;以及必须使用低效回溯实现的实现。但的确,它可以用于很多目的。 –

3

尝试

^(\w)\1*$ 

您匹配任何单词字符。如果它不止一个字符,它必须是相同的。