Страницы

Поиск по вопросам

суббота, 21 декабря 2019 г.

Как отловить пересекающиеся матчи в регулярных выражениях?

#javascript #регулярные_выражения


Допустим, есть строка testestest. Если применить к ней регулярное выражение /(test)/g,
то результат будет таков: testestest. Как сделать так, чтобы регулярное выражение захватывало
и тот промежуточный testestest? Как это правильно называется?
    


Ответы

Ответ 1



Воспользуйтесь regexp.exec(str) Если флаг g есть, то вызов regexp.exec возвращает первое совпадение и запоминает его позицию в свойстве regexp.lastIndex. Последующий поиск он начнёт уже с этой позиции. Если совпадений не найдено, то сбрасывает regexp.lastIndex в ноль. let s = "testestest"; let r = /test/g; let m; while (m = r.exec(s)) { console.log("Match: " + m[0] + ", pos: " + m.index); r.lastIndex = m.index+1; } learn.javascript.ru: Методы RegExp и String

Ответ 2



var res = [] "testestest".replace(/(?=(test))/g, (m, g) => res.push(g)) console.log(res)

Комментариев нет:

Отправить комментарий