正则表达式检测任何重复的字符,但之间有可选的空格
Regex detect any repeated character but with optional whitespace between
所以目前我有以下正则表达式模式,允许我检测任何包含 9 个连续相同字符的字符串。
/^.*(\S){9,}.*$/
这与如下字符串完美配合:this a tesssssssssst
但是我希望它也能检测到这样的字符串:this a tess sss ssssst
(相同数量的重复字符,但带有可选的空格)
有什么想法吗?
您需要将反向引用放入一个组中,并添加一个可选的 space 到组中:
^.*(\S)(?: ?){9,}.*$
参见regex demo。如果中间可以超过 1 个 space,请将 ?
替换为 *
。
.*$
部分只有在需要整行匹配时才需要,对于允许部分匹配的方法,可以使用^.*(\S)(?: ?){9,}
.
如果表示任何白色space,请将模式中的 space 替换为 \s
。
您可以通过这种方式检查多个字符。
它仅受可用捕获组数量的限制。
此项检查 1 - 3 个字符。
(\S)[ ]*(\S)?[ ]*(\S)?(?:[ ]*(?:[ ]*[ ]*)){9,}
# 1-3 Characters
( \S ) # (1)
[ ]*
( \S )? # (2)
[ ]*
( \S )? # (3)
# Add more here
(?:
[ ]*
(?: [ ]* [ ]* )
# Add more here
){9,}
所以目前我有以下正则表达式模式,允许我检测任何包含 9 个连续相同字符的字符串。
/^.*(\S){9,}.*$/
这与如下字符串完美配合:this a tesssssssssst
但是我希望它也能检测到这样的字符串:this a tess sss ssssst
(相同数量的重复字符,但带有可选的空格)
有什么想法吗?
您需要将反向引用放入一个组中,并添加一个可选的 space 到组中:
^.*(\S)(?: ?){9,}.*$
参见regex demo。如果中间可以超过 1 个 space,请将 ?
替换为 *
。
.*$
部分只有在需要整行匹配时才需要,对于允许部分匹配的方法,可以使用^.*(\S)(?: ?){9,}
.
如果表示任何白色space,请将模式中的 space 替换为 \s
。
您可以通过这种方式检查多个字符。
它仅受可用捕获组数量的限制。
此项检查 1 - 3 个字符。
(\S)[ ]*(\S)?[ ]*(\S)?(?:[ ]*(?:[ ]*[ ]*)){9,}
# 1-3 Characters
( \S ) # (1)
[ ]*
( \S )? # (2)
[ ]*
( \S )? # (3)
# Add more here
(?:
[ ]*
(?: [ ]* [ ]* )
# Add more here
){9,}