← Материалы RESOURCE
Пять типичных ошибок новичков в регулярных выражениях и способы их решения.

Во-первых, ошибка, когда точку (.) не экранируют. В регулярном выражении точка означает «любой один символ», поэтому для поиска настоящей точки её нужно записывать как \. — например, при поиске расширения файла .txt, если не написать \.txt, совпадут и такие строки, как xtxt.

Во-вторых, ошибка, когда жадное совпадение захватывает слишком много. <.*> проглатывает всё от первого < до последнего >. Чтобы захватывать теги по одному, используйте ленивое <.*?> или отрицательный класс символов <[^>]*>.

В-третьих, ошибка, когда забывают якоря. Чтобы проверить, что вся строка соответствует формату, нужно зафиксировать оба конца с помощью ^ и $. Без якорей строка проходит проверку, даже если совпадает лишь её часть, и проверка пароля или логина оказывается уязвимой.

В-четвёртых, чрезмерное экранирование спецсимволов внутри квадратных скобок. Внутри класса символов [] большинство метасимволов трактуются как обычные буквы, поэтому [.+*] означает сами эти три знака. Однако с ] ^ - \ нужно быть внимательным к их позиции.

В-пятых, ошибка, когда забывают флаги. Чтобы найти все совпадения, нужен g, чтобы игнорировать регистр — i, чтобы ^·$ применялись к каждой строке в многострочном тексте — m. Если получается только один результат, сначала проверьте флаг g.