Cách xóa mọi thứ trừ:Làm cách nào để xóa mọi thứ trừ chữ cái, số, dấu cách, dấu chấm than và dấu hỏi từ chuỗi?
chữ cái, số, dấu cách, dấu chấm than, dấu chấm hỏi từ chuỗi?
Điều quan trọng là phương pháp hỗ trợ ngôn ngữ quốc tế (UTF-8).
Cách xóa mọi thứ trừ:Làm cách nào để xóa mọi thứ trừ chữ cái, số, dấu cách, dấu chấm than và dấu hỏi từ chuỗi?
chữ cái, số, dấu cách, dấu chấm than, dấu chấm hỏi từ chuỗi?
Điều quan trọng là phương pháp hỗ trợ ngôn ngữ quốc tế (UTF-8).
Bạn có thể sử dụng regex
myString.replace(/[^\w\s!?]/g,'');
này sẽ thay thế tất cả mọi thứ nhưng một nhân vật từ, không gian, dấu chấm than, hoặc câu hỏi.
Character Class:
\w
là viết tắt của "ký tự từ", thường là[A-Za-z0-9_]
. Lưu ý sự bao gồm dấu gạch dưới và chữ số.
\s
là viết tắt của "ký tự khoảng trống". Nó bao gồm[ \t\r\n]
.
Nếu bạn không muốn gạch dưới, bạn có thể chỉ sử dụng [A-Za-z0-9]
.
myString.replace(/[^A-Za-z0-9\s!?]/g,'');
Đối với ký tự unicode, bạn có thể thêm một cái gì đó như \u0000-\u0080
vào biểu thức. Điều đó sẽ loại trừ tất cả các ký tự trong phạm vi unicode đó. Bạn sẽ phải chỉ định phạm vi cho các ký tự mà bạn không muốn xóa. Bạn có thể xem tất cả các mã trên Unicode Map. Chỉ cần thêm các ký tự bạn muốn giữ hoặc một loạt các ký tự.
Ví dụ:
myString.replace(/[^A-Za-z0-9\s!?\u0000-\u0080\u0082]/g,'');
Điều này sẽ cho phép tất cả các nhân vật được đề cập trước đây, phạm vi từ \u0000-\u0080
và \u0082
. Nó sẽ xóa \u0081
.
Chỉ là một suy nghĩ, nhưng điều đó cũng không để lại trong nhân vật gạch dưới? –
và dấu chấm than? nó loại bỏ các chữ cái quốc tế ... –
@tomaszs Tôi đã cập nhật câu trả lời để giải quyết vấn đề đó. – sachleen
Cả hai câu trả lời được đăng cho đến nay đều để lại dấu chấm hỏi. Tôi sẽ bình luận về họ, nhưng chưa có đủ đại diện.
David đúng, regex của sachleen sẽ để lại dấu gạch dưới. regex của rcdmk, được sửa đổi như sau, sẽ thực hiện thủ thuật, mặc dù nếu bạn quan tâm đến các nhân vật quốc tế, mọi thứ có thể phức tạp hơn nhiều.
var result = text.replace(/[^a-zA-Z0-9\s!?]+/g, '');
Điều này sẽ để lại các dòng và tab mới cũng như khoảng trống.Nếu bạn muốn thoát khỏi dòng mới và các tab là tốt, thay đổi nó để:
var result = text.replace(/[^a-zA-Z0-9 !?]+/g, '');
Và * bây giờ *, bạn * có thể * để lại nhận xét! =) –
lol, cảm ơn! :) – Kelvin
Hãy nhớ rằng, mặc dù: với sức mạnh tuyệt vời đến tuyệt vời ... * ooh, sáng bóng! * –
text = "A(B){C};:a.b*!c??!1<>[email protected]#3"
result = text.replace(/[^a-zA-Z0-9]/g, '')
nên trở ABCabc123
Đầu tiên, chúng ta định nghĩa văn bản như
A B C a b c 1 2 3
nhưng với các nhân vật ngẫu nhiên bộ sốresult
là:
text.replace(...)
nơi tham số là:
/.../g
,/.../
:^
có nghĩa là đảo ngược; không để loại bỏ các chữ cái đó là:
a-z
(chữ thường),A-Z
(chữ hoa) và0-9
(chữ số)
g
nghĩa toàn cầu, để loại bỏ tất cả trận đấu không chỉ là người đầu tiên phù hợp vớiTham số thứ hai là ký tự thay thế, chúng tôi se t nó vào một chuỗi rỗng để nó chỉ giữ chuỗi được chỉ định. nếu
được chỉ định, nó sẽ trở lại này:
"A B C a b c 1 2 3"
Bạn muốn biểu hiện cho phép, hoặc loại bỏ, các nhân vật như: 'a',' é' và 'è' (và vân vân ...)? –