Biểu thức chính quy là một đối tượng mô tả một chuỗi khuôn mẫu – một chuỗi các ký tự tạo thành một mẫu tìm kiếm. Biểu thức chính quy được sử dụng để thực hiện các chức năng đối sánh mẫu và “tìm kiếm và thay thế” trên văn bản.
Biểu thức chính quy có thể là một ký tự đơn hoặc một mẫu phức tạp hơn.
Biểu thức chính quy có thể được sử dụng để thực hiện tất cả các loại hoạt động tìm kiếm văn bản và thay thế văn bản.
Trong thực tế, biểu thức chính quy chúng ta cần là một biểu thức siêu phức tạp phối hợp hàng loạt các ký hiệu và qui tắc với nhau. Để có thể tự xây dựng biểu thức so khớp theo ý muốn, chúng ta cần phải nắm các ký hiệu và qui tắc.
Trong JavaScript, biểu thức chính quy thường được sử dụng với hai phương thức chuỗi: search()
và replace()
search() |
Thực hiện đối sánh toàn cục (tìm tất cả các kết quả phù hợp thay vì dừng lần so khớp đầu tiên) |
replace() |
trả về một chuỗi đã sửa đổi trong đó các mẫu được thay thế. |
Cú pháp
/pattern/modifiers;
/pattern/
là khuôn mẫu được đem đi so khớp, khuôn mẫu này được bao bởi 2 dấu /
modifiers
được sử dụng để thực hiện các tìm kiếm toàn cục và không phân biệt chữ hoa chữ thường:
g |
Thực hiện đối sánh toàn cục (tìm tất cả các kết quả phù hợp thay vì dừng lần so khớp đầu tiên) |
i |
Thực hiện đối sánh không phân biệt chữ hoa chữ thường |
m |
Thực hiện đối sánh trên nhiều dòng |
Dấu ngoặc
Dấu ngoặc được sử dụng để tìm một loạt các ký tự:
[abc] |
Tìm giá trị khớp với bất kỳ ký tự nào giữa 2 dấu ngoặc |
[^abc] |
Tìm giá trị KHÔNG khớp với bất kỳ ký tự nào nằm giữa 2 dấu ngoặc. Đây là phủ định của trường hợp trên |
[0-9] |
Tìm giá trị là ký tự số bất kỳ. Đoạn này tương đương với [0123456789] |
[^0-9] |
Tìm giá trị KHÔNG LÀ bất kỳ ký tự số nào. Đoạn này tương đương với [^0123456789] |
[a-z] |
Tìm giá trị là ký tự chữ thường bất kỳ. Đoạn này tương đương với [abcdefghijklmnopqrstuvwxyz] |
[^a-z] |
Tìm giá trị KHÔNG LÀ bất kỳ ký tự chữ thường nào. Đoạn này tương đương với [^abcdefghijklmnopqrstuvwxyz] |
(x|y) |
Tìm giá trị hoặc khớp với x hoặc khớp với y . x và y có thể là 1 ký tự hoặc cụm ký tự. |
Phức hợp
[a-d1-4] |
Tìm giá trị khớp với bất kỳ ký tự nào từ a tới d hoặc từ 1 tới 4 |
[a-d][1-4] |
Tìm đoạn giá trị gồm 2 ký tự, ký tự đầu khớp với bất kỳ ký tự nào từ a tới d và ký tự kế khớp với bất kỳ ký tự nào từ 1 tới 4 . Các giá trị khớp sẽ là a1, a2, a3, a4, b1, b2, …, d3, d4 |
[a-d1-4] |
Tìm giá trị khớp với bất kỳ ký tự nào từ a tới d hoặc từ 1 tới 4 |
Sử dụng ngoặc tròn
Ngoặc tròn bao quanh bất kỳ phần nào của biểu thức chính quy sẽ khiến phần kết quả so khớp được nhớ. Mỗi lần nhớ, chuỗi con có thể được gọi lại để sử dụng
Siêu ký tự
Siêu ký tự là những ký tự có ý nghĩa đặc biệt:
. |
một ký tự, ngoại trừ newline hoặc line terminator |
\w |
ký tự chữ, bao gồm các ký tự chữ thường, chữ in hoa, số và dấu gạch _ tương đương cách viết [a-zA-Z0-9_] |
\W |
>KHÔNG là ký tự chữ, tương đương với ^\w |
\d |
ký tự số |
\D |
ký tự không phải số |
\s |
ký tự khoảng trắng |
\S |
ký tự không phải khoảng trắng |
\b |
khớp với điểm đầu / cuối của một từ, ví dụ như \bHI hoặc HI\b |
\B |
khớp nhưng không phải điểm đầu / cuối của một từ |
\0 |
NULL character |
\n |
new line character |
\f |
form feed character |
\r |
carriage return character |
\t |
tab character |
\v |
vertical tab character |
\xxx |
octal number xxx |
\xdd |
hexadecimal number dd |
\udddd |
hexadecimal number dddd |