Глубоко понимать регулярные выражения JS --- Группа
Я писал статью о начале работы с регулярными выражениями раньше. Я думал, что был относительно знаком с регулярными выражениями, но сегодня я столкнулся с другой ловушкой. Может быть, это было потому, что я не был достаточно осторожен. Сегодня я сосредоточусь на том, чтобы поделиться с вами группировкой в JavaScript регулярных выражения. Если вы не понимаете регулярных выражений JS, вы можете нажать здесь, чтобы узнать больше.
Группировка довольно широко используется в регулярности. Группа, которую я понимаю, - это пара скобок (). Каждая пара кронштейнов представляет группу, и группу можно разделить на:
• захватить группировку
• Некапрессирующая группировка
Захват группировки
Захват группировки получит результаты соответствующей группировки в виде второго члена и третьего члена в функции, такой как Match Exec. Давайте сначала посмотрим на пример
var reg =/test (/d+)/; var str = 'new Test001 test002'; console.log (str.match (reg)); // ["test001", "001", индекс: 4, вход: "New Test001 test002"]
В коде (/D+) находится группа (некоторые люди также называют это подпаттерном), но все они представляют одинаковое значение. В приведенном выше примере Test001 является результатом точного совпадения. Тем не менее, сопоставление группы состоит в том, чтобы найти символы, соответствующие суб-паттерн/D+ из всего точного результата совпадения (то есть Test001). Здесь, очевидно, 001. Но ситуация, которая встречалась сегодня, такая.
var reg =/test (/d)+/; var str = 'new Test001 test002'; console.log (str.match (reg)); // ["test001", "1", индекс: 4, вход: "New Test001 test002"]
Разница в том, что (/D+) изменяется на (/D)+, и весь результат сопоставления все еще остается Test001, но результат первого сопоставления группы отличается. Давайте посмотрим на их различия
(/D+) Это группирующая ситуация. Поскольку по умолчанию шаблон сопоставления представляет собой жадный шаблон, то есть как можно больше соответствует всем /D+, результат матча 001, а затем добавляется пара кронштейнов, что означает группировку, поэтому результат матча в первой группе - 001. Давайте посмотрим на ( /d)+ во втором примере. Это также жадный рисунок. Сначала он сначала соответствует 0, а затем 0, а затем соответствует конец 1. Он также соответствует концу этого матча. Кажется, что нет разницы между матчем в первом примере, но группировка (/d) здесь означает сопоставление одного номера. Согласно моему предыдущему пониманию, это 0, но это понимание неправильно. Поскольку весь матч является жадным рисунком, соответствие как можно больше (/D) в группе захватит результат 1 из последнего матча. Если это не-восточный шаблон, он будет соответствовать как можно меньше.
var reg =/test (/d)+?/; var str = 'new Test001 test002'; console.log (str.match (reg)); // ["test001", "0", index: 4, вход: "New Test001 test002"]
Таким образом, соответствующий результат (/D) составляет 0. Хотя есть и результаты, которые можно соответствовать позже, вот как можно меньше, чтобы соответствовать как можно меньше
Некапрессившая группировка
Беспорядка группировки означает, что в некоторых местах необходима пара скобок, но они не хотят, чтобы это была группа захвата, то есть они не хотят, чтобы эта группа была извлечена по таким функциям, как Macth Exec. Обычно им предшествуют скобки (?: Шаблон), чтобы они стали не капитальной группой.
var reg =/test (?:/d)+/; var str = 'new Test001 test002'; console.log (str.match (reg)); // ["test001", индекс: 4, вход: "New Test001 test002"]
Таким образом, в результате матча не будет соответствия контента в результате матча, что означает, что второй элемент отсутствует.
Эта статья посвящена объяснению разницы между (/D+) и (/d)+, которая также является ямой, на которой я наступил сегодня. Если есть какие -либо ошибки, пожалуйста, не стесняйтесь их исправлять.
Приведенная выше статья имеет глубокое понимание регулярных выражений JS-группы-это весь контент, которым я поделился с вами. Я надеюсь, что это может дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.