Biểu thức chính quy (Regular Expression) là gì?
Regex là các mẫu (pattern) thay vì các chuỗi cụ thể được sử dụng tìm/thay thế (Find/Replace). Là một công cụ cực mạnh cho xử lý chuỗi trong Php, javascript… Ví dụ: Khi kiểm tra tính hợp lệ của email hoặc số điện thoại thì điều bạn nghĩ tới đầu tiên chính là Regex. Regex là viết tắt của Regular Expression, tên thuần Việt là biểu thức chính quy.
Ký tự cơ bản của Biểu thức chính quy
Nói chung là Regex còn nhiều ứng dụng hữu ích khác, tóm gọn lại một chút là hiểu đơn giản thì Regex là một chuỗi các kí tự miêu tả một bộ các chuỗi kí tự khác, theo những quy tắc và cú pháp nhất định.
Hàm Preg_match trong php
Nguyên tắc hoạt động của biểu thức Regex là so khớp dựa vào mẫu (pattern), mẫu được xây dựng từ các quy tắc căn bản của biểu thức RegEx. Và để các bạn nắm rõ regular expression là gì thì có một hàm xử lý Regular Expression trong php đó là hàm preg_match, sau đó đưa ra một vài ví dụ nhỏ để các bạn thực hành trước khi tìm hiểu các phần nâng cao hơn.
Cú pháp là: preg_match($pattern, $subject, $matches)
- $pattern là chuỗi Regex Pattern
- $subject là chuỗi nguồn để chúng ta so khớp với $pattern
- $matches là danh sách kết quả trả về đúng khi so khớp 2 chuỗi trên
VD1: kiểm tra một chuỗi là số
if (preg_match(‘/^[0-9]+$/’, ‘123’, $matches)){
var_dump($matches);
}
kết quả:
array
0 => string ‘123’ (length=3)
VD2: kiểm tra một chuỗi các ký tự thường
if (preg_match(‘/^[a-z]+$/’, ‘trianh’, $matches)){
var_dump($matches);
}
Kết quả:
array
0 => string ‘trianh’ (length=6)
VD3: Kiểm tra một chuỗi là các ký tự hoa
if (preg_match(‘/^[A-Z]+$/’, ‘TRIANH’, $matches)){
var_dump($matches);
}
Kết quả:
array
0 => string ‘TRIANH’ (length=6)
Tạo 1 Regular Expressions trong JS
Trong Javascript thì Regular Expression là một chuỗi nhưng nó không được bao quanh bởi cặp dấu nháy đơn ‘ hoặc nháy kép ” mà nó được bao quanh bởi cặp dấu /. Có 2 cách tạo:
Cú pháp: new RegExp(pattern[, flags])
VD:
var regexConst = new RegExp(‘abc’);
Hoặc sử dụng dấu /
Cú pháp: /pattern/flags
Trong đó:
- pattern là chuỗi Regular Expression
- flags là thông số cấu hình cho chuỗi pattern và nó có các giá trị:
- i : so khớp không quan tâm đến chữ hoa chữ thường
- g : so khớp toàn bộ chuỗi cần tìm
- m : so khớp luôn cả các dữ liệu xuống dòng (multiline)
Ví dụ: Pattern kiểm tra chuỗi có tồn tại chữ “trianh” không, không phân biệt chữ hoa chữ thường và tìm toàn bộ tài liệu.
var pattern = /trianh/igm;
- pattern là trianh
- flags là igm
Cách viết Regex chi tiết
Trong Regex có vài cái khá là điển hình và được sử dụng rất nhiều bao gồm so khớp chuỗi, tách chuỗi, tìm kiếm trong chuỗi, thay thế chuỗi…
Ký tự thường
Ký tự đặc biệt
Ký tự lặp
Khớp nhóm