2017-01-26 3 views
0

Ich habe eine Zeichenfolge, die ich über jquery ersetzen möchte. Sagen wir "foo". Aber es sollte nicht "foo" (mit einem Leerzeichen direkt vor "foo") ersetzen.jquery ersetzen String mit Regex einschließlich nicht

Wie würde meine jquery-Linie aussehen? Dies sucht actualy nur für Foo:

$(this).replace(/foo/g, "bar"); 

Dank!

Antwort

1

überprüfen Nur gibt es keinen Raum vor:

$(this).replace(/(^|\S)foo/g, "$1bar"); 

\S steht für jedes Zeichen, das kein Leerzeichen

x = 'foo'; 
 
x = x.replace(/(^|\S)foo/, "$1bar"); 
 
console.log(x); 
 
x = ' foo'; 
 
x = x.replace(/(^|\S)foo/, "$1bar"); 
 
console.log(x);

+0

wunderbar! Nur eine kleine Frage: Wenn ich "foo" durch " bar bar" ersetzen möchte, bekomme ich die Ausgabe " bar" in meinem Frontend ... So macht es keine span-Elemente aus meinem Code .. . irgendeine Idee? – MrLumbergh

+0

@MrLumbergh: Entschuldigen Sie, erhalten Sie nicht.Bitte bearbeiten Sie Ihre Frage und fügen Sie Beispieleingabezeichenfolgen und erwartetes Ergebnis hinzu. – Toto

+0

Alles klar. . Ich möchte, dies zu tun. '$ ("# content h2"), die jeweils (function() { \t \t var dass = $ (this); \t \t that.contents() jede (function() { \t \t \t if (this.nodeType === 3) { \t \t \t \t this.nodeValue = $ (this) .text() ersetzen (/ (^ |. \ S) foo/g, „$ 1 f oo "); \t \t \t} \t \t \t if (this.nodeT ype === 1) { \t \t \t \t $ (das) .html ($ (this) .html(). ersetzen (/ (^ | \ S) foo/g, "$ 1 f oo ")); \t \t \t} \t \t}); \t}); ' Sie sehen? Ich möchte ein um das "f" von "foo". :) – MrLumbergh