2017-06-20 56 views
3

之间的可选空白所以目前我有以下正则表达式模式,允许我检测任何字符串包含9个连续相同的字符。正则表达式检测任何重复的字符,但有

/^.*(\S)\1{9,}.*$/ 

这与像一串完美的作品如下:this a tesssssssssst但是我希望它也发现像这样的字符串:this a tess sss ssssst(重复字符的数目相同,但有一个可选的空格)

任何想法?

+0

如果多个空间是两个's's之间? – revo

+0

@revo是的任何数量的空白 –

回答

3

你需要把反向引用到一个组,并添加一个可选的空间进组:

^.*(\S)(?: ?\1){9,}.*$ 

regex demo。如果两者之间的间隔可能超过1个,请将?替换为*

.*$部分仅在需要获得整行匹配时才需要,对于允许部分匹配的方法,您可以使用^.*(\S)(?: ?\1){9,}

如果有任何空格,请用模式中的\s替换空格。

+0

美丽的谢谢! –

+0

进一步的问题,如果你可以:检测任何字符组合重复9次或更多的时间之间的空格? –

+0

请提供真实数据和预期输出的例子。 –

0

您可以通过这种方式检查多个单个字符。
它仅受限于可用捕获组的数量。

这个检查1 - 3个字符。

(\S)[ ]*(\S)?[ ]*(\S)?(?:[ ]*(?:\1[ ]*\2[ ]*\3)){9,} 

http://regexr.com/3g709

# 1-3 Characters 
(\S)      # (1) 
[ ]* 
(\S)?      # (2) 
[ ]* 
(\S)?      # (3) 
# Add more here 

(?: 
     [ ]* 
     (?: \1 [ ]* \2 [ ]* \3) 
     # Add more here 
){9,}