Skip to content

Token regex được giải thích

Mọi token regex cốt lõi: neo, lớp ký tự, bộ định lượng, nhóm và cờ. Ý nghĩa của từng token, kèm một kết quả khớp cụ thể. Tài liệu tham chiếu nhanh đi kèm công cụ Regex Tester.

Các token regex kết hợp với nhau: xếp một neo, một lớp ký tự và một bộ định lượng để tạo thành pattern. ^ ghim vào đầu chuỗi, \d khớp một chữ số, còn {2,4} đặt số lần lặp. Kết hợp chúng thành ^\d{2,4}$ để khớp cả chuỗi gồm hai đến bốn chữ số. Hãy đọc pattern từ trái sang phải, mỗi lần một token. Công cụ Regex Tester đi kèm cho phép bạn thử trực tiếp các token này với văn bản của riêng mình.

Bảng tham chiếu · 55 mụcMở công cụ regex-tester →
55 of 55 rows
Neo
Khớp vị trí ở đầu chuỗi, hoặc đầu mỗi dòng khi có cờ m.^He → He
Khớp vị trí ở cuối chuỗi, hoặc cuối mỗi dòng khi có cờ m.lo$ → lo
Khớp ranh giới từ, là vị trí giữa ký tự thuộc từ và ký tự không thuộc từ.\bcat\b → cat
Khớp ranh giới không phải từ, là vị trí giữa hai ký tự thuộc từ hoặc hai ký tự không thuộc từ.\Bar → ar
Lớp ký tự
Khớp bất kỳ ký tự đơn nào trừ ký tự xuống dòng, trừ khi đặt cờ s.a.c → abc
Khớp bất kỳ chữ số nào, từ 0 đến 9.\d → 7
Khớp bất kỳ ký tự nào không phải chữ số.\D → a
Khớp bất kỳ ký tự thuộc từ nào: chữ cái, chữ số hoặc gạch dưới.\w → _
Khớp bất kỳ ký tự nào không phải ký tự thuộc từ.\W → !
Khớp bất kỳ ký tự trắng nào: dấu cách, tab hoặc xuống dòng.a\sb → a b
Khớp bất kỳ ký tự nào không phải ký tự trắng.\S → a
Khớp một trong các ký tự được liệt kê bên trong cặp ngoặc vuông.[aeiou] → e
Khớp bất kỳ ký tự nào không nằm trong danh sách bên trong ngoặc vuông.[^aeiou] → s
Khớp bất kỳ ký tự đơn nào trong khoảng cho trước, từ a đến z.[a-z] → m
Khớp bất kỳ ký tự đơn nào kể cả xuống dòng; đây là cách viết phổ biến thay cho dấu chấm xuyên dòng.[\s\S] → \n
Khớp bất kỳ chữ cái Unicode từ hệ chữ nào, khi có cờ u.\p{L} → é
Khớp bất kỳ ký tự số Unicode từ hệ chữ nào, khi có cờ u.\p{N} → ٣
Chuỗi thoát: khớp một ký tự line feed.\n → line feed
Chuỗi thoát: khớp một ký tự tab.\t → tab
Chuỗi thoát: khớp một ký tự carriage return.\r → carriage return
Khớp ký tự đơn có mã hex hai chữ số cho trước.\x41 → A
Khớp ký tự đơn có code point hex cho trước, khi có cờ u.\u{1F600} → 😀
Giao của lớp ký tự với cờ v: khớp các ký tự cùng lúc thuộc cả hai tập hợp.[[a-z]&&[^aeiou]] → t
Bộ định lượng
Khớp token đứng trước không lần hoặc nhiều lần.ab* → abbb
Khớp token đứng trước một lần hoặc nhiều lần.a+ → aaa
Khớp token đứng trước không lần hoặc một lần, biến nó thành tùy chọn.colou?r → color
Khớp token đứng trước đúng n lần.a{3} → aaa
Khớp token đứng trước n lần trở lên.a{2,} → aaaa
Khớp token đứng trước từ n đến m lần, bao gồm cả hai đầu.a{2,4} → aaa
Bộ định lượng lazy: khớp token đứng trước không lần hoặc nhiều lần, lấy ít nhất có thể.<.*?> on <a><b> → <a>
Bộ định lượng lazy: khớp token đứng trước một lần hoặc nhiều lần, lấy ít nhất có thể.\d+? on 123 → 1
Bộ định lượng lazy: khớp token đứng trước không lần hoặc một lần, ưu tiên không lần.ab?? on ab → a
Bộ định lượng lazy: khớp token đứng trước từ n đến m lần, lấy ít nhất có thể.a{1,3}? on aaa → a
Bộ định lượng possessive (PCRE): khớp token đứng trước không lần hoặc nhiều lần và giữ lấy phần đã khớp, không bao giờ quay lui để thử cách tách khác..*+a on aaa → no match
Nhóm và phép hoặc
Nhóm bắt: khớp chuỗi đó và ghi nhớ để dùng cho backreference.(ab)+ → abab
Nhóm không bắt: khớp chuỗi đó nhưng không ghi nhớ.(?:ab)+ → abab
Lookahead khẳng định: khớp nếu các ký tự tiếp theo là abc, mà không tiêu thụ chúng.a(?=b) → a
Lookahead phủ định: khớp nếu các ký tự tiếp theo không phải abc, mà không tiêu thụ chúng.a(?!b) → a
Backreference: khớp đúng văn bản mà nhóm bắt số 1 đã bắt.(a)\1 → aa
Phép hoặc: khớp biểu thức đứng trước hoặc đứng sau dấu gạch đứng.cat|dog → dog
Nhóm bắt có tên: khớp chuỗi đó và ghi nhớ dưới tên cho trước.(?<year>\d{4}) → year = 2026
Lookbehind khẳng định: khớp nếu các ký tự phía trước là abc, mà không tiêu thụ chúng.(?<=a)b → b
Lookbehind phủ định: khớp nếu các ký tự phía trước không phải abc, mà không tiêu thụ chúng.(?<!a)b → b
Backreference có tên: khớp đúng văn bản mà nhóm có tên đã bắt.(?<w>\w+) \k<w> → the the
Nhóm atomic (PCRE): khớp chuỗi đó một lần và không bao giờ quay lui vào trong.(?>a+)ab on aab → no match
Branch reset (PCRE): phép hoặc trong đó mỗi nhánh dùng lại cùng các số nhóm.(?|(cat)|(dog)) → \1 = dog
Cờ
Cờ global: tìm mọi kết quả khớp trong chuỗi, không chỉ cái đầu tiên./a/g on aaa → a, a, a
Cờ không phân biệt hoa thường: bỏ qua chữ hoa/thường khi khớp./Hi/i → hi
Cờ multiline: coi ^ và $ là đầu và cuối của mỗi dòng./^a/m matches at the start of each line
Cờ dotall: cho phép dấu chấm khớp cả ký tự xuống dòng./a.b/s → a\nb
Cờ unicode: xử lý pattern và đầu vào như các code point Unicode./\u{1F600}/u → 😀
Cờ sticky: chỉ khớp tại đúng vị trí do lastIndex đặt./ab/y matches only at lastIndex
Cờ indices: thêm vị trí bắt đầu và kết thúc của mỗi kết quả khớp vào kết quả./b/d on abc → indices [1, 2]
Cờ unicode sets: bản u chặt chẽ hơn, còn cho phép phép toán tập hợp bên trong lớp ký tự./[a-z&&[^aeiou]]/v → t
Cờ extended (PCRE): bỏ qua khoảng trắng chưa thoát và chú thích # bên trong pattern./a b/x → ab