Возвратить положения соответствия regex () в JavaScript?

Существует ли способ получить (стартовые) позиции символа в строке результатов соответствия regex () в JavaScript?

128
задан stagas 19 February 2010 в 10:45
поделиться

3 ответа

Вот что я придумал:

// Находит начальные и конечные позиции цитируемого текста // в двойных или одинарных кавычках с поддержкой escape char, как \" \' var str = "это \"цитируемая\" строка, как вы можете "читать""; var patt = /'((?:\\\\. |[^'])*)'|"(((?:\\\\.|[^"])*)"/igm; while (match = patt.exec(str)) { console.log(match.index + ' ' + patt.lastIndex); }
57
ответ дан 24 November 2019 в 00:37
поделиться

exec возвращает объект со свойством index:

var match = /bar/.exec("foobar"); if (match) { console.log("match found at " + match. index); }

И для нескольких совпадений:

var re = /bar/g, str = "foobarfoobar"; while ((match = re.exec(str)) != null) { console.log("match found at " + match.index); }
191
ответ дан 24 November 2019 в 00:37
поделиться

Вы можете использовать метод search объекта String. Это сработает только для первого совпадения, но в остальном сделает то, что вы описали. For example:

"How are you?".search(/are/);
// 4
6
ответ дан 24 November 2019 в 00:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: