Обратные ссылки в регулярных выражениях: \n и \k<name>
Обратные ссылки — ключевая функция регулярных выражений, позволяющая разработчикам ссылаться на ранее захваченные группы непосредственно внутри самого шаблона. В этом руководстве мы подробно разберём обратные ссылки.
Как использовать обратные ссылки
В JavaScript для ссылки на уже совпавшую часть шаблона используется обратный слэш, за которым следует число. Например, \1 ссылается на первую захваченную группу, \2 — на вторую и так далее. Мы также можем давать имена частям нашего шаблона и использовать эти имена позже.
Давайте посмотрим на пример:
В этом примере \1 ссылается на первую захваченную группу. Следовательно, всё выражение будет совпадать, если слово повторяется, поэтому шаблон успешно находит "hello hello".
Использование именованных групп
Вместо чисел мы можем давать имена частям нашего шаблона. Это делает код более понятным. Для получения дополнительной информации ознакомьтесь со страницей Группы захвата, где мы также обсуждали именованные группы. Вот простой пример:
В этом примере (?<word>\w+) — это именованная группа. Мы используем \k<word> для ссылки на эту именованную группу позже.
Примечание: Именованные группы и обратные ссылки \k<name> поддерживаются во всех современных браузерах и средах Node.js без необходимости использования флагов.
Расширенное применение
Обратные ссылки могут делать больше, чем просто повторять совпадения. Давайте рассмотрим продвинутый пример:
Совпадение последовательных цифр
Мы можем использовать обратные ссылки для поиска цифры только в том случае, если следующая за ней цифра отличается. Например:
Здесь \1 — это цифра, которую мы нашли ранее. Шаблон находит цифру только в том случае, если следующая цифра отличается от захваченной. Этот приём полезен для проверки последовательностей, где соседние символы должны различаться, например, при соблюдении определённых правил паролей или форматов данных.
Примечание: Несмотря на свою мощь, обратные ссылки могут влиять на производительность при работе с большими строками. Некоторые движки регулярных выражений также имеют ограничения при использовании обратных ссылок внутри lookarounds, поэтому тщательно тестируйте шаблоны в вашей целевой среде.
Заключение
Понимание обратных ссылок в регулярных выражениях JavaScript помогает выполнять сложные задачи по поиску и обработке текста. Зная, как ими пользоваться, мы можем легче решать сложные проблемы. Попробуйте применить эти техники в своих собственных проектах на JavaScript!
Практика
Какое из следующих утверждений об обратных ссылках в регулярных выражениях JavaScript является верным?