Подтвердить что ты не робот

Отрицание строк с использованием регулярных выражений

Можно ли выполнять строковое отрицание в регулярных выражениях? Мне нужно сопоставить все строки, которые не содержат строку "..". Я знаю, что вы можете использовать ^[^\.]*$ для соответствия всем строкам, которые не содержат ".", но мне нужно сопоставить более одного символа. Я знаю, что могу просто сопоставить строку, содержащую "..", а затем отрицать возвращаемое значение совпадения для достижения того же результата, но я просто задавался вопросом, возможно ли это.

4b9b3361

Ответ 1

Вы можете использовать негативные образы:

^(?!.*\.\.).*$

Это приводит к тому, что выражение не соответствует, если оно может найти последовательность из двух периодов в любой строке.

Ответ 2

^(?:(?!\.\.).)*$

будет соответствовать только в том случае, если в строке нет двух последовательных точек.