我已经找到了各种非常接近的答案,但并不完全。
我需要查看一个字符串,找到任何使用次数超过3次的字符。基本上限制密码禁止“密西西比”,因为它有超过3秒的密码。我认为它只需要是字符,但应该是unicode。所以我想(> alpha :)使字符集匹配。
我发现(\w)\1+{4,}
找到了连续的字符,比如ssss或missssippi,但如果它们不是连续的则不会。
通过其他正则表达式问题的工作方式,看看是否有人回答了问题,但是有很多,但没有快乐。
答案 0 :(得分:4)
这应该这样做:
/(.)(.*\1){3}/
尝试将其与检查允许的字符结合起来没有任何意义。您应首先测试所有字符是否为允许的字符,然后再运行此测试。这就是使用'。'的原因。这里。
虽然会很慢。在字符串上迭代一次并计算字符会更快。虽然为了你的目的,我怀疑它有很大的不同,因为字符串太短了。
答案 1 :(得分:1)
(\w)(.*\1){2,}
匹配“单词字符”,然后匹配“任何东西,然后是第一件事”的2份副本。因此,第一件事就是3份,中间有任何东西。
答案 2 :(得分:1)
.*(\w).*\1.*\1.*\1.*
这将匹配一个字符串,该字符串具有任意数量的字符,然后是某个字符,并且相同的字符在此之后重复三次(总共四个),其间包含任意数量的字符(0..n)。这就是你想要的,对吧?
例如,测试它http://www.regexplanet.com/simple/index.html
此正则表达式匹配,例如“密西西比”(> 3 s'es)和“闪烁的小星星”(> 3 t's)