Bài 51: Bảng biểu thức Regular Expression trong Javascript
Chúng ta đã được học Regular Expression trong Javascript và cũng đã làm một số bài tập kết hợp với một số quy tắc căn bản mà mình đã liệt kê. Nhưng đó chỉ là nhũng quy tắc căn bản nhất và hoàn toàn không đầy đủ. Vì vậy trong bài này mình sẽ bổ sung các biểu thức Regular Expression nâng cao.
1. Bảng quy tắc Regular Expression
Chúng ta sẽ chia thành từng nhóm để sau này dễ tìm kiếm.
Modifiers
Modifier | Description |
---|---|
i | So sánh không phân biệt chữ hoa chữ thường (case-insensitive) |
g | So sánh toàn bộ chuỗi dù trong chuỗi có xuống hàng (global) |
m | So sánh nhiều dòng (multiline) |
Brackets
Expression | Description |
---|---|
[abc] | Tìm các ký tự a, b hoặc c |
[^abc] | Tìm các ký tự không phải a, b và c |
[0-9] | Tìm các ký tự là chữ số từ 0-9 |
[^0-9] | Tìm các ký tự không phải chữ số từ 0-9 |
(x|y) | Tìm ký tự x hoặc y |
Metacharacters
Expression | Description |
---|---|
. | Tìm ký tự bất kì |
\w | Tìm ký tự chữ cái |
\W | Tìm các ký tự không phải là chữ cái |
\d | Tìm ký tự là chữ số |
\D | Tìm ký tự không phải là chữ số |
\s | Tìm ký tự là khoảng trắng |
\S | Tìm ký tự không phải khoảng trắng |
\b | Tìm so khớp bắt đầu hoặc kết thúc chuỗi |
\B | Tìm so khớp không phải bắt đầu hoặc kết thúc chuỗi |
\0 | Tìm ký tự NULL |
\n | Tìm ký tự xuống hàng |
\t | Tìm ký tự tab |
Quantifiers
Expression | Description |
---|---|
+ | Kiểm tra ký tự xuất hiện một hoặc nhiều lần |
* | Kiểm tra ký tự xuất hiện không hoặc nhiều lần |
? | Kiểm tra ký tự xuất hiện không hoặc một lần |
{X} | Kiểm tra ký tự xuất hiện đúng X lần |
{X,Y} | Kiểm tra ký tự xuất hiện tối thiểu X lần và tối đa Y lần |
{X,} | Kiểm tra ký tự xuất hiện ít nhất X lần |
^ | Kiểm tra ký tự bắt đầu chuỗi |
$ | Kiểm tra ký tự kết thúc chuỗi |
2. Các ví dụ thực hành với biểu thức RegExp
Sau đây là các ví dụ thực hành để học Regular Expression trong Javascript.
Ta sử dụng cú pháp {10,} để kiểm tra ít nhất 10 chữ N liên tiếp.
var pattern = /n{10,}/i; if (pattern.test("10 chu n la nnnnnnnnnn")) { document.write('Chuỗi có NHIỀU hơn 10 chữ n'); } else { document.write('Chuỗi có ÍT hơn 10 chữ n'); }
Để kiểm tra chính xác chuỗi là 'freetuts.net' thì bắt buộc ta phải thêm ký tự bắt đầu ^ và kết thúc $ để fix chuỗi lại. Và có một lưu ý rằng ký tự . trong chuỗi 'freetuts.net' là ký tự đặc biệt vì nó có trong danh sách các biểu thức của RegExp nên bắt buộc ta phải thêm dấu \ đằng trước nó.
var pattern = /^freetuts\.net$/i; if (pattern.test("freetuts.net")) { document.write('Chuỗi freetuts.net'); } else { document.write('Không phải chuỗi freetuts.net'); }
Để kiểm tra các chữ số ta dùng [0-9] và chiều dài 8 ký tự nên ta dùng {8}.
var pattern = /^[0-9]{8}$/; if (pattern.test("12345678")) { document.write('Các số dài 8 ký tự'); } else { document.write('Không phải là số hoặc ngắn hơn 8 ký tự'); }
Ta sử dụng [0-9] để kiểm tra là chữ số. Và các cặp xxxx có chiều dì là 4 nên ta sử dụng {4}.
var pattern = /^[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}$/; if (pattern.test("1234-1232-1321-2312")) { document.write('Mã thẻ hợp lệ'); } else { document.write('Mã thẻ không hợp lệ'); }
3. Lời kết
Với bảng danh sách các biểu thức RegExp này bạn có thể giải mọi bài toán rồi đấy. Tuy nhiên để giải được các bài phức tạp thì đòi hỏi bạn phải thực sự rành rỏi và biết các vận dụng đúng chỗ. Ngoài các biểu thức này ra còn có một số khái niệm như Condition, Lookahead, Lookbehind nhưng mình sẽ không trình bày ở serie này mà nó nằm ở serie Regular Expression tron PHP.
Bài tiếp theo chúng ta sẽ tìm hiểu một số hàm dùng để xử lý chuỗi RegExp trong Javascript.