Giới thiệu về Regex

Regex hay Regular Expression? là cách để diễn tả một đoạn mẫu phức tạp dùng để tìm kiếm (search pattern) bằng một chuỗi

Regex đượ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:

Regex là gì? image 1

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:

Regex là gì? image 2

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 a và kế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 123 và bắt đầu từ 1 và kết thúc từ 3

Ví dụ thêm

^ .. $ : Sử dụng trong trường hợp cần xác định ký tự bắt đầu và kết thúc.
\d : Sử dụng trong trường hợp cần xác định 1 ký tự là số.
\D : Sử dụng trong trường hợp cần xác định 1 ký tự không phải là số.
+ : 1 hoặc n. 
VD: ^ab\d+$ ; # ab1, abc2, ab123, là hợp lệ. Còn ab, abc, ... là không hợp lệ
* : 0 hoặc n.
VD: ^ab\d*$; # ab, abc, ab1, abc2, ab123 đều là hợp lệ.

tỔNG KẾT:

Việc validate dữ liệu đầu vào là rất quan trọng đối với lập trình nhất là lập trình web vì vậy Regex có vai trò tương đối quan trọng trong lập trình phải không nào.

Viết câu trả lời

Drop Images

0 Bình luận