2012-05-04 21 views
3

我需要一个正则表达式来确保字符串至少包含3个不同的字符(任何类型)。检查字符串中是否存在至少3个不同字符的正则表达式

例如,aqaqaq无效,因为它仅包含2个不同的字符。 aqwaqa或aq3aqa或aq!aqa是有效的。

这是可能的正则表达式?

语言:使用Javascript/PHP

感谢

+0

对不起,正确的。 Javascript和PHP,但我相信这两个是相同的 – mspir

回答

4

您可以使用包含负向前看符号正则表达式:

/(.).*(?!\1)(.).*(?!\1)(?!\2)(.)/ 

例子:

> regex = /(.).*(?!\1)(.).*(?!\1)(?!\2)(.)/ 
> regex.exec('abab!aba') 
["abab!ab", "a", "!", "b"] 
> regex.exec('abababa') 
null 
+0

这很好,坦克分配! – mspir

+0

你能解释一下吗?谢谢 – mspir

+1

@Spiros:'\ 1'是引用第一个“(。)”的反向引用。表达式'(?!\ 1)(。)'意思是“除了与第一个'(。)'匹配的字符之外的任何字符。'\ 2'类似。 –

相关问题