Lookaheads ((?=...)
) являются утверждениями нулевой длины.Они утверждают, что подстрока, следующая за этой позицией в исходной строке, должна соответствовать заданному шаблону.Другими словами,
/Windows(?=bbb)/
Будет соответствовать подстроке Windows
, только если подстрока, следующая сразу за s
, также соответствует шаблону bbb
.С другой стороны,
/(?=bbb)Windows/
будет соответствовать подстроке Windows
только в том случае, если подстрока, следующая непосредственно за начальной позицией исходного совпадения, также соответствует шаблону bbb
- что невозможно, ни одна строка никогда не будет соответствоватьчто.
Самый простой способ заставить этот шаблон работать, это использовать обычную 'in-line' группу ((...)
) и настроить строку замены, чтобы вставить эту подходящую подстроку в соответствующее место ($<em>N</em>
).Например:
console.log('Windowsbbb'.replace(/Windows(bbb)/, '2222$1')) // 2222bbb
console.log('bbbWindows'.replace(/(bbb)Windows/, '$12222')) // bbb2222