Существует ли способ получить (стартовые) позиции символа в строке результатов соответствия regex () в JavaScript?
Вот что я придумал:
// Находит начальные и конечные позиции цитируемого текста // в двойных или одинарных кавычках с поддержкой escape char, как \" \' var str = "это \"цитируемая\" строка, как вы можете "читать""; var patt = /'((?:\\\\. |[^'])*)'|"(((?:\\\\.|[^"])*)"/igm; while (match = patt.exec(str)) { console.log(match.index + ' ' + patt.lastIndex); }
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); }
Вы можете использовать метод search
объекта String
. Это сработает только для первого совпадения, но в остальном сделает то, что вы описали. For example:
"How are you?".search(/are/);
// 4