正则表达式查找在字符串中使用超过 3 次但不连续使用的任何字符

geo*_*ffc 4 regex

我已经找到了各种非常接近的答案,但并不完全。

我需要查看一个字符串,并找到使用次数超过 3 次的任何字符。基本上是为了限制密码以禁止“密西西比”,因为它的长度超过 3 秒。我认为它只需要是字符,但应该是 unicode。所以我猜字符集的 (:alpha:) 匹配。

我发现(\w)\1+{4,}which 可以找到连续的字符,例如 ssss 或missssippi,但如果它们不连续,则不会。

用我的方式解决其他正则表达式问题,看看是否有人回答了它,但有很多,而且还没有快乐。

Mar*_*ers 6

这应该这样做:

/(.)(.*\1){3}/
Run Code Online (Sandbox Code Playgroud)

尝试将其与检查允许的字符结合起来是没有任何意义的。您应该首先测试所有字符都是允许的字符,然后再运行此测试。这就是为什么可以使用 '.' 的原因。这里。

不过会很慢。在字符串上迭代一次并计算字符会更快。尽管出于您的目的,我怀疑它有多大区别,因为字符串太短了。

  • @Franz:除非我读错了问题,否则他不在乎它们是否连续。 (2认同)