3 Stimmen

Benötige Javascript Regex Replace, um bestimmte Wörter mit <a...> einzuschließen

Wir haben eine Datenbank, in der jeder Tabellenname mit WW beginnt. Ich möchte ein SQL auf einer Webseite anzeigen, aber jeden Tabellennamen mit einem Link versehen. Zum Beispiel:

"select * from wwx_something where ..."

Sollte umgewandelt werden in:

"select * from <a href="stackoverflow.com/table/wwx_something/'>wwx_something</a> where ..."

Natürlich kann es mehrere Tabellen geben, und es sollte nicht zwischen Groß- und Kleinschreibung unterschieden werden.

Ich brauche eine javascript regex Lösung... Ich kann nicht scheinen, um es zu bekommen, zu arbeiten.

3voto

lapo Punkte 3007

Lösung mit einer einzigen ersetzen. :

var re = /(FROM|JOIN)\s+(WW\S+)/gi;
yourText.replace(re, "$1 <a href='$2'>$2</a>");

Beachten Sie, dass ich auch vorläufige Unterstützung für Dinge wie "SELECT * FROM wwa JOIN wwb".

ADDED nach Kommentar: ja, Sie können mit einer benutzerdefinierten Funktion ersetzen, um die URL in Großbuchstaben zu schreiben:

var re = /(FROM|JOIN)\s+(WW\S+)/gi;
function change(s, p1, p2) {
    return p1 + " <a href='http://whatever/" + p2.toUpperCase() + "'>" + p2 + "</a>";
}
yourText.replace(re, change);

PS: IMHO ist es besser, FROM/JOIN in den Abgleich einzubeziehen, denn so sind Sie besser vor verirrten "ww" geschützt, die nichts mit Tabellennamen zu tun haben... ein wenig Kontext hilft immer bei der Disambiguierung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X