Giới thiệu

Regex hay còn gọi là Regular Expressions, được sử dụng nhiều trong các trường hợp validate email, input, ... Regex được tạo thành từ các ký tự số 0-9, các chữ cái, ký tự đặc biệt trên bàn phím như %#$$!. Sau đây là một số định dạng của regex dành cho

(?<=\s|^)\d+(?=\s|$)
^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$

Để kiểm tra mình viết Regex có đúng hay không, các bạn có thể vào link sau: http://rubular.com/

Các cú pháp cơ bản của Regex

Sau đây là danh sách các cú pháp cơ bản của Regex, chúng ta sẽ đi lần lượt từng mục thông qua các ví dụ:

  1. abc... : Chữ
  2. 123... : Số
  3. /d: Bất cứ số nào
  4. /D : Gì cũng được trừ số ra
  5. . : Bất cứ ký tự nào.
  6. [abc] : Chỉ có a, b hoặc c
  7. [^abc] : Không được có a, b, c
  8. [0-9] : Số từ 0 -> 9
  9. \w: Bất cứ ký tự chữ nào.
  10. \W: Gì cũng được trừ chữ ra.
  11. {m}: Lặp lại m lần.
  12. {m, n} : Lặp lại tối thiểu m lần, tối đa n lần.
  13. * : Có thể không có hoặc nhiều lần. (Không giới hạn số lần)
  14. + : Tối thiểu phải xuất hiện 1 lần.
  15. ? : Có xuất hiện cũng được, không cũng được.
  16. \s : Dấu cách (space).
  17. \S: Gì cũng được trừ dấu cách ra (space).
  18. ^..$: Quy định bắt đầu và kết thúc của một chuỗi.
  19. (...): Nhóm các ký tự lại.
  20. (a|b) : Một trong hai a hoặc b.

Ví dụ về abc

Hãy viết Regex để validate một chuỗi chỉ có 3 chữ 'abc'. Cụ thể như sau:
- Hợp lệ: abc.
- Không hợp lệ:
    + a
    + b
    + ab
    + abcd
    + abc123

Dựa trên các cú pháp cơ bản đã nêu, chúng ta có thể suy nghĩ ra các đáp án như sau:

abc
abc...

Chúng ta sẽ tiến hành kiểm tra "abc" có đúng hay không bằng cách sử dụng http://rubular.com/ như hình dưới: Trong rubulax, những chuỗi test của bạn được bôi màu thì sẽ được gọi là hợp lệ, nhưng yêu cầu của chúng ta là kết quả chỉ bao gồm các ký tự abc thôi nên cú pháp "abc" là không hợp lệ. Do đó, đáp án chính xác sẽ là ^abc$. Lúc này kết quả sẽ khớp với yêu cầu đã đặt ra: Giải thích

- abc : Validate string có một chuỗi là abc
- ^ac$ : Validate string có ký tự bắt đầu bằng akết thúc bằng ký tự c. 
Do đó:
^abc$ : Validate string có một chuỗi là abc, trong đó ký tự bắt đầu là a, ký tự kết thúc là c.

Ví dụ về 123

Hãy viết Regex để validate một chuỗi chỉ có 3 chữ số '123'. Cụ thể như sau:
- Hợp lệ: abc.
- Không hợp lệ:
    + 1
    + 2
    + 12
    + 1234
    + 123abc

Tương tự với mục ở trên, chúng ta có được kết quả:

^123$ # Validate một chuỗi bao gồm 123bắt đầu từ 1 và kết thúc từ 3

Ví dụ về \d

Hãy viết Regex để validate một chuỗi chỉ có ký tự là số. Cụ thể như sau:
- Hợp lệ:
    + 1
    + 2
    + 3
    + 123
- Không hợp lệ:
    +