正则表达式重复字符计数
如果我有一组像“abcdefghij”这样的字符并使用这个字符,我会使用这个字符随机生成一个密码。 生成的密码可以具有例如6个字符。 如何使用正则表达式validation密码,以便邻居字符不相同,并且字符不会重复两次?
你可以使用类似的东西:
/^ (?:(.) (?!\1) # neighbor characters are not identical (?!(?>.*?\1){2}) # character does not occur more than twice )* \z/x
Perl引用,如果不支持,可以删除primefaces组。
在Java正则表达式中,它可以写成:
^(?:(.)(?!\1|(?:.*?\1){2}))*\z
AFAIK,这不能通过一个简单的正则表达式来完成(特别是,确保一个字母最多只出现两次。你可以做一堆像这样的表达式
[^a]*(a[^a]*(a[^a]*)) [^b]*(b[^b]*(b[^b]*)) ....
而且(匹配意味着validation失败):
[^a]*aa[^a]* [^b]*bb[^b]*
但显然这不是好主意。
字符不重复的条件也许可以用捕获组来处理,但我几乎可以肯定另一个不能用正则表达式来检查。
顺便说一句……为什么对正则表达式的痴迷? 编程这些检查是微不足道的,正则表达式在一组案例中很有用,但不是每个检查都可以使用正则表达式完成。