, исключая первый и последний.
аюсь сделать что-то подобное с помощью расширенного текстового редактора переполнения стека. Учитывая этот текст:
[Text Example][1]
[1][http://www.example.com]
Я хочу зациклить каждого[string][int]
то, что я делаю так:
var Text = "[Text Example][1]\n[1][http: //www.example.com]";
// Find resource links
var arrMatch = null;
var rePattern = new RegExp(
"\\[(.+?)\\]\\[([0-9]+)\\]",
"gi"
);
while (arrMatch = rePattern.exec(Text)) {
console.log("ok");
}
Это прекрасно работает, он предупреждает «хорошо» для каждого[string][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]
Конечный результат для первого примера:
<a href="http://www.example.com" rel="nofollow">Text Example</a>
редактироватьЯ дошел до этого сейчас:
var Text = "[Text Example][1]\n[1][http: //www.example.com]";
// Find resource links
reg = new RegExp(
"\\[(.+?)\\]\\[([0-9]+)\\]",
"gi");
var result;
while ((result = reg.exec(Text)) !== null) {
var LinkText = result[1];
var Match = result[0];
Text = Text.replace(new RegExp(Match, "g"), '<a href="#">" + LinkText + "</a>');
}
console.log(Text);