Nói chung tốt hơn nên có danh sách trắng hơn danh sách cấm.
Regex có \w
thuận tiện, có nghĩa là chữ số và dấu gạch dưới (một số biến thể cũng thêm ký tự có dấu (á, é, ô, v.v.) vào danh sách, số khác thì không).
Bạn có thể đảo ngược điều đó bằng cách sử dụng \W
để có nghĩa là mọi thứ không phải là chữ và số.
Vì vậy, thay thế \W
bằng chuỗi rỗng sẽ xóa tất cả ký tự 'đặc biệt'.
Ngoài ra, nếu bạn cần một bộ khác nhau của nhân vật để tự chữ và số, bạn có thể sử dụng một lớp nhân vật phủ nhận: [^abc]
sẽ phù hợp với tất cả mọi thứ đó không phải là a
hoặc b
hoặc c
và [^a-z]
sẽ phù hợp với tất cả mọi thứ đó không phải là trong khoảng a,b,c,d...x,y,z
tương đương với \w
là [A-Za-z0-9_]
và do đó \W
là [^A-Za-z0-9_]
Nguồn
2009-02-09 14:53:58
Tôi có thể thêm một số trường hợp thử nghiệm với chữ in hoa. –
@jm: đó là một điều tốt quá, tôi đã quá lười biếng để gõ bất kỳ và "i" theo regex làm cho các trường hợp regex-insensitive;) – Kris
P.S. Tại sao đây là câu trả lời được chấp nhận nếu câu hỏi bây giờ tuyên bố môi trường là .NET? (Tôi không nghĩ rằng nó đã làm khi tôi trả lời). Nó sẽ không quá khác biệt về khái niệm trong ví dụ C#, nhưng sẽ không giống như thế này. – Kris