I ' m пытается сделать что-то подобное с редактором форматированного текста для переполнения стека. Учитывая этот текст:
[Text Example][1]
[1][http://www.example.com]
Я хочу выполнить цикл для каждого найденного [string] [int]
, что я делаю следующим образом:
var Text = "[Пример текста] [1] \ n [ 1] [http: //www.example.com] "; // Находим ссылки на ресурсы var arrMatch = null; var rePattern = new RegExp ("\\ [(. +?) \\] \\ [([0-9] +) \\]», «gi»); в то время как (arrMatch = rePattern.exec (текст)) {console.log ("хорошо"); }
Отлично работает, выдает "ОК" для каждого [строка] [int]
. Что мне нужно сделать, так это для каждого найденного совпадения заменить исходное совпадение компонентами второго совпадения.
Таким образом, в цикле $ 2 будет представлять часть int, первоначально согласованную, и я бы запустил это регулярное выражение (pseduo)
while (arrMatch = rePattern.exec(Text)) {
var FindIndex = $2; // This would be 1 in our example
new RegExp("\\[" + FindIndex + "\\]\\[(.+?)\\]", "g")
// Replace original match now with hyperlink
}
Это будет соответствовать
[1][http://www.example.com]
Конечным результатом для первого примера будет:
Text Example
Я дошел до этого:
var Text = "[Пример текста] [1] \ n [ 1] [http: //www.example.com] "; // Находим ссылки на ресурсы reg = new RegExp ("\\ [(. +?) \\] \\ [([0-9] +) \\]", "gi"); var результат; в то время как ((результат = reg.exec (Текст))! == null) {var LinkText = результат [1]; var Match = результат [0]; Text = Text.replace (новое регулярное выражение (Match, "g"), ' "+ LinkText +" '); } console.log (текст);