2013-12-20 81 views
-2

我要寻找一个正则表达式匹配不包含至少三个字符[A-ZA-Z]正则表达式匹配字符串不是方含至少X字符

Valid Strings: 
abc12345 
asd 
abc12321!! 

Invalid Strings: 
aa! 
111!!!a 
!!!!!!b 
+2

另外,你要连续三个字符的字符串还是应该有只是在随机位置至少有三个字符字符串? –

+1

@wared我会认为OP关心一般的正则表达式,而不是特定语言或库中的特定实现。 –

+0

我最终使用^(?:[^ \ p {L}] * [\ p {L}]){0,2} [^ \ p {L}] * $来支持非Unicode字符。感谢您的帮助! – Timur

回答

2

我会用:

(?:[^a-zA-Z]*[a-zA-Z]){3,}[^a-zA-Z]* 

你可以找到这个表达式here的交代。

比赛:

abc12345 
asd 
abc12321!! 
a85ug 
83nj%@8n2 

不匹配:

aa! 
111!!!a 
!!!!!!b 
a59&*@g9 
+0

最后一部分'[^ a-zA-Z] *'不是强制性的。尽管如此+1。 – Toto

+0

@ M42我知道,但没有它的正则表达式可能不匹配整个字符串。 –

+0

这不是一个问题,因为至少有3个字母的字符是有或没有最后一部分。 – Toto

2

您可以检查是否字符串以下正则表达式匹配字符串:

[a-zA-Z]{3,} 

如果不匹配,则该字符串无效。

基本上{3,}正则表达式的一部分表示前一个字符类应至少匹配三次。这是非常灵活的,你可以指定一个匹配所需的最小数量和最大次数,例如:{MIN,MAX},如果你忽略了MIN或MAX,那么只使用指定的值(即{3,}意味着至少为 3,而{,3}将意味着最多 3)

相关问题