Регулярное выражение обнаруживает любой повторяющийся символ, но с необязательным пробелом между ними.


Таким образом, в настоящее время у меня есть следующий шаблон регулярных выражений, позволяющий мне обнаружить любую строку, содержащую 9 символов, которые являются одинаковыми последовательно.

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

Это прекрасно работает со строкой, подобной следующей: this a tesssssssssst однако я хочу, чтобы он также обнаружил строку, подобную этой: this a tess sss ssssst (тот же номер повторяющегося символа, но с необязательным пробелом)

Есть идеи?

2 3

2 ответа:

Вам нужно поместить backreference в группу и добавить необязательное пространство в группу:

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

Смотрите демонстрацию регулярных выражений . Если между ними может быть больше 1 пробела, замените ? на *.

Часть .*$ нужна только в том случае, если вам нужно получить полное соответствие строки, для методов, допускающих частичное совпадение, вы можете использовать ^.*(\S)(?: ?\1){9,}.

Если имеется в виду пробел, замените его на \s в шаблоне.

Таким образом можно проверить более одного символа.
Он ограничен только количеством доступных групп захвата.

Этот проверяет наличие 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,}