#regex #node.js
#регулярное выражение #node.js
Вопрос:
Если я выполню эту инструкцию в node repl
"hello".match(/(w )(.*)/)
Он возвращает это
[ 'hello',
'hello',
'',
index: 0,
input: 'hello' ]
Я ожидал, что он вернет первые три элемента, откуда взялись другие значения?
Ответ №1:
- Первый элемент в массиве — это полное совпадение регулярных выражений («группа 0»). Это
hello
, конечно. - Второй элемент — это содержимое совпадения первой группы захвата
(w )
. Этоhello
снова. - Третий элемент — это содержимое совпадения второй группы захвата
(.*)
. Это пустая строка послеhello
. index
это позиция начала совпадения, которая является первым символом строки.input
показывает вам строку, для которой было выполнено регулярное выражение, — которая естьhello
.
Удивительно сложно найти документы по этому вопросу (по крайней мере, для меня), но вот кое-что из MSDN, описывающее объект, возвращаемый совпадением регулярных выражений: http://msdn.microsoft.com/en-us/library/ie/7df7sf4x (v= против 94).aspx:
Если глобальный флаг не установлен, массив, возвращаемый методом match, имеет два свойства,
input
иindex
.input
Свойство содержит всю искомую строку.index
Свойство содержит позицию совпадающей подстроки в полной искомой строке.
Комментарии:
1. хорошо, я не мог понять, почему появляются свойства index и input, я просто ожидал совпадений.
2. MSDN — это джунгли… Хорошее объяснение, 1 🙂