Regex detect any repeated character but with optional whitespace between

夙愿已清 提交于 2019-12-23 16:09:34

问题


So currently I've got the following regex pattern, allowing me to detect any string containing 9 characters that are the same consecutively.

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

This works perfectly with a string like the following: this a tesssssssssst however I wish for it to also detect a string like this: this a tess sss ssssst (Same number of the repeated character, but with optional whitespace)

Any ideas?


回答1:


You need to put the backreference into a group and add an optional space into the group:

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

See the regex demo. If there can be more than 1 space in between, replace ? with *.

The .*$ part is only needed if you need to get the whole line match, for methods that allow partial matches, you may use ^.*(\S)(?: ?\1){9,}.

If any whitespace is meant, replace the space with \s in the pattern.




回答2:


You can check more than a single character this way.
It's only limited by the number of capture groups available.

This one checks for 1 - 3 characters.

(\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,}


来源:https://stackoverflow.com/questions/44659031/regex-detect-any-repeated-character-but-with-optional-whitespace-between

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!