2011-02-07 29 views
10

Tôi cần regex để thay thế các từ bên trong văn bản và không phải là một phần của từ.Javascript: regex để thay thế các từ bên trong văn bản và không phải là một phần của các từ

Mã của tôi mà thay thế 'de' cũng có khi nó là một phần của từ:

str="de degree deep de"; 
output=str.replace(new RegExp('de','g'),''); 

output==" gree ep " 

Output mà tôi cần: " degree deep "

nên regex gì nhận được kết quả đúng?

Trả lời

17
str.replace(/\bde\b/g, ''); 

Lưu ý rằng

RegExp('\\bde\\b','g') // regex object constructor (takes a string as input) 

/\bde\b/g    // regex literal notation, does not require \ escaping 

là những điều tương tự.

\b biểu thị "ranh giới từ". Ranh giới từ được định nghĩa là vị trí có ký tự từ theo sau ký tự không phải từ hoặc ngược lại. Một ký tự từ được định nghĩa là [a-zA-Z0-9_] trong JavaScript.

Start-of-chuỗiend-of-chuỗi vị trí có thể là ranh giới từ là tốt, miễn là họ đang theo dõi hoặc trước bởi một nhân vật từ, tương ứng.

Lưu ý rằng khái niệm của một ký tự từ không hoạt động tốt bên ngoài lĩnh vực tiếng Anh.

2

Bạn có thể sử dụng reg ex \bde\b.

Bạn có thể tìm mẫu đang hoạt động here.

Ký tự regex \b hoạt động như một dấu tách từ. Bạn có thể tìm thấy thêm here.

2

Bạn nên gửi kèm theo ký tự tìm kiếm của bạn giữa \b:

str="de degree deep de"; 
output=str.replace(/\bde\b/g,''); 
Các vấn đề liên quan