我已经找到了各种非常接近的答案,但并不完全。
我需要查看一个字符串,并找到使用次数超过 3 次的任何字符。基本上是为了限制密码以禁止“密西西比”,因为它的长度超过 3 秒。我认为它只需要是字符,但应该是 unicode。所以我猜字符集的 (:alpha:) 匹配。
我找到了 (\w)\1+{4,}
它会找到连续的字符,如 ssss 或 missssippi,但如果它们不连续,则不会。
用我的方式解决其他正则表达式问题,看看是否有人回答了它,但有很多,而且还没有快乐。
最佳答案
这应该这样做:
/(.)(.*\1){3}/
尝试将其与检查允许的字符结合起来是没有任何意义的。您应该首先测试所有字符都是允许的字符,然后再运行此测试。这就是为什么可以使用 '.' 的原因。这里。
不过会很慢。在字符串上迭代一次并计算字符会更快。尽管出于您的目的,我怀疑它有多大区别,因为字符串太短了。
关于正则表达式查找在字符串中使用超过 3 次但不连续使用的任何字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1843506/