2011-01-12 43 views

Trả lời

37

regex của bạn là hoàn hảo, và có, bạn phải thoát khỏi dấu gạch chéo từ JavaScript sử dụng các dấu gạch chéo để chỉ regexes.

Tuy nhiên, vấn đề là phương pháp replace của JavaScript không thực hiện thay thế tại chỗ. Nghĩa là, nó không thực sự thay đổi chuỗi - nó chỉ cho bạn kết quả của sự thay thế.

Hãy thử điều này:

myString = '/courses/test/user'; 
myString = myString.replace(/\/courses\/([^\/]*)\/.*/, "$1"); 
document.write(myString); 

này đặt myString với giá trị thay thế.

9

string.replace không sửa đổi chuỗi gốc. Thay vào đó, một chuỗi trả về một chuỗi mới đã thực hiện thay thế.

Hãy thử:

myString = '/courses/test/user'; 
document.write(myString.replace(/\/courses\/([^\/]*)\/.*/, "$1")); 
9

/[\/]/g phù hợp với dấu gạch chéo.
/[\\]/g khớp với dấu gạch chéo ngược.

+0

Và '/ [\/| \\]/g' khớp với cả dấu gạch chéo tiến và lùi. –

6

Thực ra, bạn không cần phải thoát khỏi dấu gạch chéo khi ở trong một lớp nhân vật như trong một phần của ví dụ của bạn (tức là, [^\/]* là tốt như chỉ [^/]*). Nếu nó nằm ngoài lớp nhân vật (giống như phần còn lại của ví dụ của bạn chẳng hạn như \/courses), thì bạn cần phải thoát khỏi dấu gạch chéo.

Các vấn đề liên quan