Regular expression syntax cheat sheet
Trang này cung cấp bảng tóm tắt tổng quát về tất cả các tính năng của cú pháp RegExp bằng cách tổng hợp nội dung từ các bài viết trong hướng dẫn RegExp. Nếu bạn cần thêm thông tin về một chủ đề cụ thể, hãy theo dõi liên kết trên tiêu đề tương ứng để truy cập bài viết đầy đủ hoặc truy cập hướng dẫn.
Lớp ký tự
Lớp ký tự phân biệt các loại ký tự khác nhau, ví dụ như phân biệt chữ cái và chữ số.
| Ký tự | Ý nghĩa |
|---|---|
[xyz]
|
Lớp ký tự: Khớp với bất kỳ ký tự nào trong dấu ngoặc vuông. Bạn có thể chỉ định một phạm vi ký tự bằng cách sử dụng dấu gạch ngang, nhưng nếu dấu gạch ngang xuất hiện là ký tự đầu tiên hoặc cuối cùng trong dấu ngoặc vuông, nó được coi là dấu gạch ngang thực sự để đưa vào lớp ký tự như một ký tự thông thường.
Ví dụ,
Ví dụ,
Ví dụ, |
|
|
Lớp ký tự phủ định:
Khớp với bất kỳ thứ gì không nằm trong dấu ngoặc vuông. Bạn có thể chỉ định một phạm vi
ký tự bằng cách sử dụng dấu gạch ngang, nhưng nếu dấu gạch ngang xuất hiện là
ký tự đầu tiên sau Lưu ý: Ký tự ^ cũng có thể chỉ ra đầu đầu vào. |
. |
Wildcard:
Khớp với bất kỳ ký tự đơn nào ngoại trừ các ký tự kết thúc dòng:
|
\d |
Escape lớp ký tự chữ số:
Khớp với bất kỳ chữ số nào (số Ả Rập). Tương đương với |
\D |
Escape lớp ký tự không phải chữ số:
Khớp với bất kỳ ký tự nào không phải chữ số (số Ả Rập). Tương đương
với |
\w |
Escape lớp ký tự từ:
Khớp với bất kỳ ký tự chữ và số nào từ bảng chữ cái Latin cơ bản,
bao gồm cả dấu gạch dưới. Tương đương với |
\W |
Escape lớp ký tự không phải từ:
Khớp với bất kỳ ký tự nào không phải ký tự từ trong bảng chữ cái
Latin cơ bản. Tương đương với |
\s |
Escape lớp ký tự khoảng trắng:
Khớp với một ký tự khoảng trắng đơn, bao gồm dấu cách, tab, form
feed, line feed và các khoảng trắng Unicode khác. Tương đương với
|
\S |
Escape lớp ký tự không phải khoảng trắng:
Khớp với một ký tự đơn không phải khoảng trắng. Tương đương với
|
\t |
Khớp với một tab ngang. |
\r |
Khớp với một ký tự carriage return. |
\n |
Khớp với một ký tự linefeed. |
\v |
Khớp với một tab dọc. |
\f |
Khớp với một ký tự form-feed. |
[\b] |
Khớp với một ký tự backspace. Nếu bạn đang tìm kiếm assertion ranh giới từ
(\b), xem
Assertions.
|
\0 |
Khớp với ký tự NUL. Không được theo sau bởi một chữ số khác. |
\cX
|
Khớp với một ký tự điều khiển sử dụng
ký hiệu caret, trong đó "X" là một chữ cái từ A–Z hoặc a–z (tương ứng với các code point
|
\xhh
|
Hex escape:
Khớp với ký tự có mã hh (hai
chữ số thập lục phân).
|
\uHHHH
|
Unicode escape:
Khớp với một đơn vị mã UTF-16 có giá trị
HHHH (bốn chữ số thập lục phân).
|
\u{H…H}
|
Unicode code point escape:
(Chỉ khi cờ u được đặt.) Khớp với ký tự có
giá trị Unicode U+H…H (1 đến 6 chữ số thập lục phân).
|
\p{UnicodeProperty},
\P{UnicodeProperty}
|
Escape lớp ký tự Unicode: Khớp với một ký tự dựa trên thuộc tính ký tự Unicode của nó: ví dụ, ký tự emoji, ký tự katakana tiếng Nhật, hoặc ký tự Han/Kanji tiếng Trung/Nhật, v.v.). |
\ |
Chỉ ra rằng ký tự tiếp theo nên được xử lý đặc biệt, hay được "thoát". Nó hoạt động theo một trong hai cách.
Lưu ý: Để khớp ký tự này theo nghĩa đen, hãy thoát nó
bằng chính nó. Nói cách khác, để tìm kiếm |
x|y
|
Disjunction:
Khớp với "x" hoặc "y". Mỗi thành phần, được phân tách bởi dấu gạch đứng (
Lưu ý: Một disjunction là một cách khác để chỉ định "một tập hợp các lựa chọn", nhưng nó không phải là một lớp ký tự. Các disjunction không phải là nguyên tử — bạn cần dùng một nhóm để làm cho nó trở thành một phần của mẫu lớn hơn. |
Assertions
Assertions bao gồm các ranh giới, chỉ ra điểm bắt đầu và kết thúc của các dòng và từ, và các mẫu khác chỉ ra theo một cách nào đó rằng một kết quả khớp là có thể (bao gồm look-ahead, look-behind và các biểu thức điều kiện).
Assertions kiểu ranh giới
| Ký tự | Ý nghĩa |
|---|---|
^ |
Assertion đầu ranh giới đầu vào:
Khớp với đầu đầu vào. Nếu cờ Lưu ý: Ký tự này có ý nghĩa khác khi nó xuất hiện ở đầu một lớp ký tự. |
$ |
Assertion cuối ranh giới đầu vào:
Khớp với cuối đầu vào. Nếu cờ |
\b |
Assertion ranh giới từ: Khớp với một ranh giới từ. Đây là vị trí mà một ký tự từ không được theo sau hoặc đứng trước bởi một ký tự từ khác, chẳng hạn như giữa một chữ cái và một dấu cách. Lưu ý rằng một ranh giới từ được khớp không được đưa vào kết quả khớp. Nói cách khác, độ dài của một ranh giới từ được khớp là bằng không. Ví dụ:
Để khớp với một ký tự backspace ( |
\B |
Assertion không phải ranh giới từ:
Khớp với một ranh giới không phải từ. Đây là vị trí mà ký tự trước và
sau có cùng loại: Cả hai phải là ký tự từ, hoặc
cả hai phải là ký tự không phải từ, ví dụ như giữa hai chữ cái hoặc giữa hai
dấu cách. Đầu và cuối chuỗi được coi là không phải từ.
Giống như ranh giới từ được khớp, ranh giới không phải từ được khớp cũng
không được đưa vào kết quả khớp. Ví dụ,
|
Các assertions khác
Note:
Ký tự ? cũng có thể được dùng như một quantifier.
| Ký tự | Ý nghĩa |
|---|---|
x(?=y) |
Assertion lookahead:
Khớp với "x" chỉ khi "x" được
theo sau bởi "y". Ví dụ, |
x(?!y) |
Assertion lookahead phủ định:
Khớp với "x" chỉ khi "x"
không được theo sau bởi "y". Ví dụ, |
(?<=y)x |
Assertion lookbehind:
Khớp với "x" chỉ khi "x" được
đứng trước bởi "y". Ví dụ,
|
(?<!y)x |
Assertion lookbehind phủ định:
Khớp với "x" chỉ khi
"x" không được đứng trước bởi "y". Ví dụ,
|
Nhóm và backreference
Nhóm và backreference chỉ ra các nhóm ký tự biểu thức.
| Ký tự | Ý nghĩa |
|---|---|
(x) |
Nhóm bắt giữ:
Khớp với
Một biểu thức chính quy có thể có nhiều nhóm bắt giữ. Trong kết quả,
các kết quả khớp với nhóm bắt giữ thường nằm trong một mảng có các thành phần theo
cùng thứ tự như dấu ngoặc đơn trái trong nhóm bắt giữ. Đây thường
chỉ là thứ tự của các nhóm bắt giữ. Điều này trở nên quan trọng khi các nhóm bắt giữ
được lồng nhau. Các kết quả khớp được truy cập bằng chỉ mục của các phần tử trong kết quả ( Nhóm bắt giữ có một hình phạt về hiệu suất. Nếu bạn không cần chuỗi con được khớp để được ghi nhớ, hãy ưu tiên dấu ngoặc đơn không bắt giữ (xem bên dưới).
|
(?<Name>x) |
Nhóm bắt giữ có tên:
Khớp với "x" và lưu trữ nó vào
thuộc tính groups của kết quả khớp được trả về dưới tên được chỉ định
bởi
Ví dụ, để trích xuất mã vùng Hoa Kỳ từ một số điện thoại,
chúng ta có thể dùng |
(?:x) |
Nhóm không bắt giữ:
Khớp với "x" nhưng không ghi nhớ
kết quả khớp. Chuỗi con được khớp không thể được truy xuất từ các phần tử của mảng kết quả ( |
(?flags:x), (?flags-flags:x) |
Modifier:
Bật hoặc tắt các cờ được chỉ định chỉ cho mẫu được bao gồm. Chỉ các cờ |
\n
|
Backreference:
Trong đó "n" là một số nguyên dương. Khớp với cùng chuỗi con được khớp bởi
nhóm bắt giữ thứ n trong biểu thức chính quy
(đếm dấu ngoặc đơn trái). Ví dụ,
|
\k<Name> |
Backreference có tên:
Một tham chiếu ngược đến chuỗi con cuối cùng khớp với
nhóm bắt giữ có tên được chỉ định bởi
Ví dụ,
Lưu ý: |
Quantifiers
Quantifiers chỉ ra số lượng ký tự hoặc biểu thức cần khớp.
Note: Trong phần sau, item không chỉ đề cập đến các ký tự đơn lẻ, mà còn bao gồm lớp ký tự và nhóm và backreference.
| Ký tự | Ý nghĩa |
|---|---|
x*
|
Khớp với item "x" đứng trước 0 hoặc nhiều lần. Ví dụ,
|
x+
|
Khớp với item "x" đứng trước 1 hoặc nhiều lần. Tương đương với
|
x?
|
Khớp với item "x" đứng trước 0 hoặc 1 lần. Ví dụ,
Nếu được dùng ngay sau bất kỳ quantifier nào trong số |
x{n}
|
Trong đó "n" là một số nguyên không âm, khớp chính xác "n" lần xuất hiện của
item "x" đứng trước. Ví dụ, |
x{n,}
|
Trong đó "n" là một số nguyên không âm, khớp ít nhất "n" lần xuất hiện của
item "x" đứng trước. Ví dụ, |
x{n,m}
|
Trong đó "n" và "m" là các số nguyên không âm và |
|
|
Mặc định các quantifier như
Lưu ý: Thêm |