之间的可选空白所以目前我有以下正则表达式模式,允许我检测任何字符串包含9个连续相同的字符。正则表达式检测任何重复的字符,但有
/^.*(\S)\1{9,}.*$/
这与像一串完美的作品如下:this a tesssssssssst
但是我希望它也发现像这样的字符串:this a tess sss ssssst
(重复字符的数目相同,但有一个可选的空格)
任何想法?
之间的可选空白所以目前我有以下正则表达式模式,允许我检测任何字符串包含9个连续相同的字符。正则表达式检测任何重复的字符,但有
/^.*(\S)\1{9,}.*$/
这与像一串完美的作品如下:this a tesssssssssst
但是我希望它也发现像这样的字符串:this a tess sss ssssst
(重复字符的数目相同,但有一个可选的空格)
任何想法?
你需要把反向引用到一个组,并添加一个可选的空间进组:
^.*(\S)(?: ?\1){9,}.*$
见regex demo。如果两者之间的间隔可能超过1个,请将?
替换为*
。
.*$
部分仅在需要获得整行匹配时才需要,对于允许部分匹配的方法,您可以使用^.*(\S)(?: ?\1){9,}
。
如果有任何空格,请用模式中的\s
替换空格。
美丽的谢谢! –
进一步的问题,如果你可以:检测任何字符组合重复9次或更多的时间之间的空格? –
请提供真实数据和预期输出的例子。 –
您可以通过这种方式检查多个单个字符。
它仅受限于可用捕获组的数量。
这个检查1 - 3个字符。
(\S)[ ]*(\S)?[ ]*(\S)?(?:[ ]*(?:\1[ ]*\2[ ]*\3)){9,}
# 1-3 Characters
(\S) # (1)
[ ]*
(\S)? # (2)
[ ]*
(\S)? # (3)
# Add more here
(?:
[ ]*
(?: \1 [ ]* \2 [ ]* \3)
# Add more here
){9,}
如果多个空间是两个's's之间? – revo
@revo是的任何数量的空白 –