Отрицание строки с использованием регулярных выражений
-
18-09-2019 - |
Вопрос
Можно ли выполнить отрицание строки в регулярных выражениях?Мне нужно сопоставить все строки, которые не содержат строку ".."
.Я знаю, что ты можешь использовать ^[^\.]*$
чтобы сопоставить все строки, которые не содержат "."
но мне нужно сопоставить более одного символа.Я знаю, что мог бы просто сопоставить строку, содержащую ".."
а затем отрицать возвращаемое значение совпадения, чтобы добиться того же результата, но я просто задавался вопросом, возможно ли это.
Решение
Вы можете использовать негативные взгляды:
^(?!.*\.\.).*$
Это приводит к тому, что выражение не совпадает, если оно может найти последовательность из двух периодов в любом месте строки.
Другие советы
^(?:(?!\.\.).)*$
будет совпадать только в том случае, если нигде в строке нет двух последовательных точек.