Hướng dẫn dùng regex escape trong PHP

Ở bài trước chúng ta đã tìm hiểu sơ qua về khái niệm Regular Expression rồi, bài này chúng ta sẽ tiếp tục với những lý thuyết tiếp theo của Regular Expression và kèm theo với thực hành của từng phần.

1, Hàm preg_match.

-Hàm này dùng để kiểm tra so khớp dữ liệu đầu vào và chuỗi Regular Expression có pass không và trả về kết quả.

Cú Pháp:

preg_match($pattern, $subject, $match, $flags, $offset);

Trong đó:

  • $pattern là chuỗi Regular Expression.
  • $subject là chuỗi cần so khớp.
  • $match là kết trả về, được truyền vào dưới dạng tham chiếu (có thể bỏ trống).
  • $flags là tham số  chỉ ra vị trí cắt chuỗi so khớp (có thể bỏ trống).
  • $offset là tham số chỉ ra vị trí bắt đầu của việc so khớp chuỗi (có thể bỏ trống).

VD: So sánh xem chuỗi có tồn tại đoạn 'toidicode' hay không?

VD: Kiểm tra xem một chuỗi có phải là toàn chữ hay không?

2, Khai báo chuỗi pattern.

- Để khai báo chuỗi Regular Expression thì các bạn phải luôn nhớ đặt chúng trong cặp dấu '/'.

VD: So sánh trong chuỗi có tồn tại pattern. 

-Nếu như trong trường hợp bạn muốn so khớp toàn bộ chuỗi thì bạn cần sử dụng cặp dấu:

  • ^ bắt đầu.
  • $ kết thúc.

VD: Cũng với ví dụ trên nhưng giờ mình sẽ chuyển sang so khớp toàn bộ chuỗi.

3, Các khuôn mẫu regex.

-Để sử dụng các khuôn mẫu chuỗi chúng ta sử dụng trong cặp dấu [].

  • Nếu như bạn muốn cho phép các ký tự từ min đến max thì bạn chỉ cần điền chúng giữa dấu -  theo quy tắc [min-max].
  • Nếu như bạn chỉ muốn cho phép các ký tự được liệt kê thì bạn chỉ cần liệt kê các ký tự vào trong cặp [].

-Dưới đây là các khuôn mẫu cơ bản

Regex Mô tả
[a-z] Chỉ cho phép nhập vào các chuỗi in thường từ a đến z
[A-Z] Chỉ cho phép nhập vào các chuỗi in hoa từ a đến z.
[0-9] Chỉ cho phép nhập vào các số từ 0 đến 9.

Các ví dụ.

Regex chỉ nhận chữ in thường.

Regex chỉ nhận chữ in hoa.

Regex chỉ nhận số.

Regex chỉ nhận số và chuỗi in thường.

4, So khớp chuỗi và độ dài chuỗi.

-Để có thể so sánh khớp chuỗi và độ dài của chuỗi thì các bạn chỉ cần thêm cú pháp {begin, end} vào sau khuôn mẫu của regex.

VD: So sánh từ chuỗi xem có phải chỉ chứa chữ in thường và có độ dài từ 3 đến 5 ký tự hay không?

-Và nếu như bạn muốn kiểm tra độ dài chuẩn của chuỗi thì bạn chỉ cần bớt đi một tham số trong cặp {}.

VD: So sánh xem chuỗi hiện tại có phải chỉ chứa các chữ in thường và dài 10 ký tự hay không?

5, Ký tự đặc biệt trong Regex.

. đại diện cho ký tự bất kỳ.

-Trong regex nếu như bạn muốn pattern cả chữ, số và ký tự thì bạn chỉ cần đặt dấu . - dấu . này  đại diện cho ký tự có thể là chuỗi, số, ký tự.

VD:

+ đại diện cho một hoặc nhiều ký tự.

VD: Kiểm tra xem trong chuỗi có tồn tại ít nhất một chữ số hay không?

* đại diện cho không hoặc nhiều ký tự.

VD: Kiểm tra xem chuỗi này có phải trống hoặc chỉ có số hay không?

\d đại diện cho chữ số bất kỳ (tương đương với [0-9])

VD: Kiểm tra xem chuỗi có phải chứa toàn số không.

\D đại diện cho phủ định của chữ số.

VD: Kiểm tra một chuỗi không phải là số.

\s một ký tự khoảng trắng.

-Ký tự khoảng trắng này bao gồm (space, tab, newline,)

VD: kiểm tra xem chuỗi có khoảng trắng không?

\S không chứa khoảng trắng.

-Đây là phủ định của \s.

VD: kiểm tra chuỗi không có khoảng trắng.

Các pattern khác.

Regex Mô tả
[[:alpha:]]  So khớp với chuỗi nào chứa các ký tự chữ cái (cả in hoa và in thường).
[[:digit:]] So khớp với chuỗi nào chứa các chữ số từ 0 tới 9.
[[:alnum:]] Gộp của [[:alpha:]][[:digit:]]
[[:space:]] So khớp với chuỗi nào chứa một khoảng trắng.
\w Một ký tự từ a-z hoặc A-Z hoặc 0-9.
\W Phủ định của \w

6, Lời kết.

-Ngoài những quy tắc phía trên thì vẫn còn vài quy tắc nữa nhưng rất ít khi sử dụng nên mình không nhắc đến ở đây. Các bạn chú ý giúp mình phần này vì nó khá là quan trọng và sẽ được sử dụng rất là nhiều khi làm các dự án có sự tương tác với người dùng.