2010-11-19 34 views
12

Tôi có một chuỗi mà tôi cần để chạy một thay thế.Javascript thay thế ký tự đại diện regex

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

Giá trị 1, 2 và tất cả các blog có thể thay đổi. Có thể biến chúng thành các ký tự đại diện không?

Cảm ơn trước,

Trân

Trả lời

15

Bạn có thể sử dụng .* để thay thế cho "zero hoặc nhiều hơn của bất kỳ nhân vật ở đây" hoặc .+ cho "một hoặc nhiều của bất kỳ nhân vật ở đây". Tôi không chắc chắn 100% chính xác những gì bạn đang cố gắng để làm, nhưng ví dụ:

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

Nhưng nếu có nhiều hơn sau khi hoặc trước khi nó:

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

Live example

Lưu ý rằng ở cả hai bên trên, chỉ có kết quả trùng khớp đầu tiên mới được thay thế. Nếu bạn muốn thay thế tất cả trận đấu, thêm một g như thế này:

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

Bạn có thể đọc lên trên của JavaScript regular expressions on MDC.

+0

Có thể thử bằng cách sử dụng biến thể lười biếng của bộ chọn, cụ thể là '*' và '+' trong trường hợp có thể có dấu gạch chéo bổ sung sau đây đề cập.? chuỗi. –

0

Hãy thử điều này thoát

(/.+){4} 

phù hợp

+1

Sử dụng tốt hơn '[^ /]' thay vì '.'. – Gumbo

+0

@Gumbo mà sẽ đạt được lợi nhuận hàng mặc dù là tốt và đó có thể không phải là những gì OP muốn. – Keng

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

JS có yêu cầu '/' để được thoát? – Keng

+0

Khi '/' là dấu phân cách cho các hàm regexps (bạn không đặt chúng trong dấu ngoặc kép): có – ThiefMaster

1

gì về chỉ việc tách chuỗi tại dấu gạch chéo và chỉ cần thay thế các giá trị?

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('/'); 

Điều đó sẽ trở lại:.?

'/blogs/3/8/some-specific-blog' 
Các vấn đề liên quan