Javascript Regexp-Schleife alle Spiele

Ich versuche, etwas ähnliches zu tun mit stack-overflow-s rich-text-editor. Angesichts dieses Textes:

[Text Example][1]

[1][http://www.example.com]

Möchte ich Schleife jedes [string][int] finden, was ich zu tun auf diese Weise:

JS:

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");
}

Diese großen Werke, es meldet " ok " für jede [string][int]. Was muss ich aber tun, ist für jede übereinstimmung gefunden wird, ersetzen Sie den ersten match mit den Komponenten des zweiten Partie.

Also in der Schleife $2 darstellen würde den int-Teil ursprünglich abgestimmt, und ich würde diese regexp (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
}

Diese würde mit

[1][http://www.example.com]

Ergebnis für das erste Beispiel wäre:

<a href="http://www.example.com" rel="nofollow">Text Example</a>

Bearbeiten

Habe ich bekommen, soweit Sie dies jetzt:

JS:

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);

InformationsquelleAutor Tom Gullen | 2011-04-29
Schreibe einen Kommentar