Làm thế nào tôi có thể làm điều này bất cứ nơi nào?
Về cơ bản, tôi đang cố gắng khớp tất cả các loại ký tự linh tinh như ký hiệu, dấu chấm phẩy, ký hiệu đô la, v.v.
Làm thế nào tôi có thể làm điều này bất cứ nơi nào?
Về cơ bản, tôi đang cố gắng khớp tất cả các loại ký tự linh tinh như ký hiệu, dấu chấm phẩy, ký hiệu đô la, v.v.
Câu trả lời:
[^a-zA-Z\d\s:]
\d
và \s
phần mở rộng Perl mà thường không được hỗ trợ bởi các công cụ lớn tuổi thích grep
, sed
, tr
, lex
vv
Điều này nên làm điều đó:
[^a-zA-Z\d\s:]
Nếu bạn muốn coi các ký tự Latin có dấu (ví dụ: à) là các chữ cái bình thường (nghĩa là tránh khớp chúng quá), bạn cũng cần đưa phạm vi Unicode thích hợp ( \ u00C0- \ u00FF ) vào biểu thức chính của mình, vì vậy, nó sẽ trông như thế này:
/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
^
phủ nhận những gì saua-zA-Z
khớp chữ hoa và chữ thường\d
khớp chữ số\s
khớp với khoảng trắng (nếu bạn chỉ muốn khớp các khoảng trắng, thay thế khoảng trắng này bằng khoảng trắng):
phù hợp với một dấu hai chấm\u00C0-\u00FF
phù hợp với phạm vi Unicode cho các ký tự Latin có dấu.nb. Kết hợp phạm vi Unicode có thể không hoạt động đối với tất cả các công cụ regex, nhưng ở trên chắc chắn hoạt động trong Javascript (như đã thấy trong bút này trên Codepen).
nb2. Nếu bạn không bận tâm về việc khớp dấu gạch dưới, bạn có thể thay thế a-zA-Z\d
bằng \w
, khớp với chữ cái, chữ số và dấu gạch dưới.
Thử cái này:
[^a-zA-Z0-9 :]
Ví dụ về JavaScript:
"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")
Xem một ví dụ trực tuyến:
Không có chữ và số, khoảng trắng hoặc '_'.
var reg = /[^\w\s)]|[_]/g;
Regex này hoạt động cho C # , PCRE và Go để đặt tên cho một số.
Nó không hoạt động với JavaScript trên Chrome theo những gì RegexBuddy nói. Nhưng đã có một ví dụ cho điều đó ở đây.
Phần chính của điều này là:
\p{L}
đại diện \p{L}
hoặc \p{Letter}
bất kỳ loại thư từ bất kỳ ngôn ngữ nào.
Bản thân regex đầy đủ: [^\w\d\s:\p{L}]
Trong JavaScript:
/[^\w_]/g
^
phủ định, tức là chọn bất cứ thứ gì không có trong tập hợp sau
\w
bất kỳ ký tự từ nào (nghĩa là bất kỳ ký tự chữ và số nào, cộng với dấu gạch dưới)
_
phủ định dấu gạch dưới, vì nó được coi là một ký tự 'từ'
Ví dụ sử dụng - const nonAlphaNumericChars = /[^\w_]/g;
/[^a-zA-Z0-9\s\:]*/