2010-11-19 23 views
12

Ich habe eine Zeichenfolge, die ich brauche, um einen Ersatz zu führen.Javascript ersetzen Regex Wildcard

string = replace('/blogs/1/2/all-blogs/',''); 

Die Werte 1, 2 und All-Blogs können sich ändern. Ist es möglich, sie zu Wildcards zu machen?

Vielen Dank im Voraus,

Grüße

Antwort

15

Sie .* als Platzhalter für „Null oder mehrere beliebige Zeichen hier“ oder .+ für „ein oder mehrere beliebige Zeichen hier“ verwenden können. Ich bin nicht 100% sicher, genau das, was Sie zu tun versuchen, aber zum Beispiel:

var str = "/blogs/1/2/all-blogs/"; 
str = str.replace(/\/blogs\/.+\/.+\/.+\//, ''); 
alert(str); // Alerts "", the string is now blank 

Aber wenn es mehr nach oder vor es:

str = "foo/blogs/1/2/all-blogs/bar"; 
str = str.replace(/\/blogs\/.+\/.+\/.+\//, ''); 
alert(str); // Alerts "foobar" 

Live example

Beachten Sie, dass In beiden Fällen wird nur die erste Übereinstimmung ersetzt. Wenn Sie alle Spiele ersetzen wollte, fügen Sie ein g wie folgt aus:

str = str.replace(/\/blogs\/.+\/.+\/.+\//g, ''); 
//          ^-- here 

Sie können regular expressions on MDC auf JavaScripts nachlesen.

+0

könnte versuchen, die faul Variante des Selektor, nämlich '*' und '+' in Fällen, in denen es möglicherweise zusätzliche Schrägstriche werden nach dem erwähnt.? Zeichenfolge. –

0

Versuchen Sie, diese

(/.+){4} 

Flucht nach Bedarf

+1

Verwenden Sie besser '[^ /]' anstelle von '.'. – Gumbo

+0

@Gumbo, die die Linie trifft, kehrt aber auch zurück, und das mag nicht sein, was OP will. – Keng

1
js> 'www.google.de/blogs/1/2/all-blogs'.replace(/\/blogs\/[^\/]+\/[^\/]+\/[^\/]+\/?/, ''); 
www.google.de 
+0

Benötigt JS "/" als Escapezeichen? – Keng

+0

Wie '/' ist das Trennzeichen für Regexps (Sie setzen sie nicht in Anführungszeichen): ja – ThiefMaster

1

Was ist nur die Saite an Schrägstrichen aufzuteilen und nur die Werte zu ersetzen?

var myURL = '/blogs/1/2/all-blogs/', fragments, newURL; 
fragments = myURL.split('/'); 
fragments[1] = 3; 
fragments[2] = 8; 
fragments[3] = 'some-specific-blog'; 
newURL = fragments.join('/'); 

Das zurückkehren soll.?

'/blogs/3/8/some-specific-blog'