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

标签 regex

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

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

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

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

最佳答案

这应该这样做:

/(.)(.*\1){3}/

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

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

关于正则表达式查找在字符串中使用超过 3 次但不连续使用的任何字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1843506/

相关文章:

ruby - 如何使用 ruby​​ 正则表达式获取子字符串?

javascript - Chrome 句柄是否正确匹配?

.net - 如何避免 .NET RegEx 类中的无限循环?

ruby - 如何在 ruby​​1.8 中重写正则表达式 (?<!...)。 (重新实现 wpautop 功能)

java - 我需要一个 SQL 查询来找到你可以用一组字母组成的所有单词,包括最多两个空白 block

python - 在python中合并带连字符的单词

r - 方程组。如何拆分字符串以在 R 中获得两个矩阵 A 和 b

python - RegEx Python 查找并打印到新文档

regex - 有没有办法在单个语句中将某个函数的返回值编译成正则表达式?

javascript - Javascript验证,仅允许使用Alpha字符,连字符(-),点(.),撇号(')和空格