Bài học theo mô-đun (4/4)
Thuộc tính Unicode thoát
Các lớp \w, \d, \s trong ASCII không đủ cho tiếng Ý, tiếng Pháp, tiếng Hy Lạp
hoặc văn bản biểu tượng cảm xúc. Ưu đãi JavaScript hiện đại (với cờ u -- Unicode)
thoát thuộc tính \p{...}: các lớp ngữ nghĩa dựa trên Unicode
thuộc tính của các ký tự.
Pattern: \p{L}+ (with flag u)
Sample: Ciao caffe' \u00fcber \u4e16\u754c
^^^^ ^^^^^^^ ^^^^ ^^^^\p{L} = "bất kỳ Chữ cái nào (Unicode)": bao gồm các chữ cái có dấu, tiếng Trung
chữ tượng hình, chữ Cyrillic, tiếng Hy Lạp\u2026 mọi thứ. Những cái phổ biến nhất:
\p{L}-- chữ cái (thuộc bất kỳ bảng chữ cái nào).\p{N}-- số (chữ số Ả Rập, La Mã, Ấn Độ\u2026).\p{P}-- dấu câu.\p{S}-- ký hiệu (toán học, tiền tệ, biểu tượng cảm xúc\u2026).\p{Z}-- dấu cách/dấu phân cách.\p{Script=Latin}-- cụ thể là bảng chữ cái Latinh.\p{Script=Greek}-- bảng chữ cái Hy Lạp. Và vân vân.
Và các phiên bản phủ định \P{L}, \P{N}, \u2026
Sự khác biệt với \w và \d
\\w matches [A-Za-z0-9_] -- ASCII only, no "caffe'"
\\p{L}\\p{N}_ with flag u -- includes accented charactersĐể có trình phân tích cú pháp mạnh mẽ cho văn bản tiếng Ý, thích \p{L} hơn \w:
citta', perche', andro' khớp chính xác với các từ.
Thuộc tính Unicode và khả năng tương thích trình duyệt
Các thuộc tính Unicode như \\p{L} (Chữ cái) hoặc \\p{Script=Latin} mở rộng các lớp sang bảng chữ cái quốc tế. Trong JavaScript, chúng yêu cầu nghiêm ngặt cờ u (hoặc v), nếu không công cụ sẽ đưa ra lỗi cú pháp.
Hãy thử nó
Tìm mọi từ, kể cả những từ có dấu (citta', perche', e' \u2026). Sử dụng thuộc tính escape \\p{L} với cờ u.
Hiển thị gợi ý
Thay thế \\w+ bằng \\p{L}+ và thêm cờ u (ngoài g).
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Tìm mọi ký hiệu Unicode (tiền tệ, toán học, biểu tượng cảm xúc) trong văn bản, ngoại trừ các chữ cái và chữ số.
Hiển thị gợi ý
\\p{S} khớp với danh mục Ký hiệu của Unicode. Hãy nhớ cờ u.
Giải pháp khả dụng sau 3 lần thử
Thử thách bổ sung
Tìm tất cả các từ có chứa các chữ cái trong bảng chữ cái Cyrillic bằng cách sử dụng `\p{Script=Cyrillic}`.
Hiển thị gợi ý
Sử dụng \\p{Script=Cyrillic} với bộ định lượng + và cờ u.
Giải pháp khả dụng sau 3 lần thử