Регулярное выражение обнаруживает любой повторяющийся символ, но с необязательным пробелом между ними.
Таким образом, в настоящее время у меня есть следующий шаблон регулярных выражений, позволяющий мне обнаружить любую строку, содержащую 9 символов, которые являются одинаковыми последовательно.
/^.*(S)1{9,}.*$/
Это прекрасно работает со строкой, подобной следующей: this a tesssssssssst
однако я хочу, чтобы он также обнаружил строку, подобную этой: this a tess sss ssssst
(тот же номер повторяющегося символа, но с необязательным пробелом)
Есть идеи?
2 ответа:
Вам нужно поместить backreference в группу и добавить необязательное пространство в группу:
^.*(\S)(?: ?\1){9,}.*$
Смотрите демонстрацию регулярных выражений . Если между ними может быть больше 1 пробела, замените
?
на*
.Часть
.*$
нужна только в том случае, если вам нужно получить полное соответствие строки, для методов, допускающих частичное совпадение, вы можете использовать^.*(\S)(?: ?\1){9,}
.Если имеется в виду пробел, замените его на
\s
в шаблоне.
Таким образом можно проверить более одного символа.
Он ограничен только количеством доступных групп захвата.Этот проверяет наличие 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,}