RSSJavascript

Regular expression (Regex) trong javascript

Regex là gì? Regular Expression (Regex) có nghĩa là “Biểu thức chính quy” dùng để môt tả một mẫu chuỗi được sắp xếp theo một quy luật nhất định nào đó, ví dụ số điện thoại, địa chỉ email… Tác dụng của Regex – Regex được sử dụng trong việc xử lý chuỗi như: tìm kiếm, thay thế, bóc tách dữ liệu… – Regex được sử dụng nhiều trong việc kiểm tra tính hợp lệ đầu vào của dữ liệu, ví dụ: địa chỉ email có hợp lệ hay không? có đúng định dạng ngày tháng hay không? …

Regex là gì?

Regular Expression (Regex) có nghĩa là “Biểu thức chính quy” dùng để môt tả một mẫu chuỗi được sắp xếp theo một quy luật nhất định nào đó, ví dụ số điện thoại, địa chỉ email…

Tác dụng của Regex

- Regex được sử dụng trong việc xử lý chuỗi như: tìm kiếm, thay thế, bóc tách dữ liệu…

- Regex được sử dụng nhiều trong việc kiểm tra tính hợp lệ đầu vào của dữ liệu, ví dụ: địa chỉ email có hợp lệ hay không? có đúng định dạng ngày tháng hay không? …

Khai báo Regex trong Javascript

var tên_biến = /mẫu_chuỗi/cách tìm;

Có 3 cách tìm như sau:

  • g: Lặp lại quá trình tìm kiếm cho đến khi kết thúc chuỗi
  • i: không phân biệt ký tự hoa – thường
  • m: Hỗ trợ tìm kiếm nhiều dòng

Có thể kết hợp nhiều cách tìm với nhau, ví dụ: gi
Biểu thức Regex có thể hoặc không có cách tìm

Một số phương thức phổ biến hỗ trợ Regex trong Javascript

- search(): Tìm kiếm chuỗi phù hợp với biểu thức và trả về vị trí của chuỗi đó

- match(): Tìm kiếm chuỗi phù hợp với biểu thức và trả về mảng giá trị tìm thấy

- replace(): Tìm kiếm chuỗi phù hợp với biểu thức và thay thế  bằng một chuỗi khác

- test(): Kiểm tra chuỗi có phù hợp với biểu thức hay không và trả về kết quả dạng logic (true và false)

Ví dụ: Tìm và in ra tất cả các kí tự  a có trong chuỗi str không phân biệt ký tự hoa – thường

var pattern = /a/gi;
str = "Chuoi co chua 2 ky tu A";
document.write(str.match(pattern)); //Kết quả: a,A

Các phép toán tìm kiếm theo vị trị

Giả sử ta có chuỗi str

  • ^: Trả về chuỗi kết quả trong trường hợp chuỗi này nằm ở đầu của chuỗi str
  • $: Trả về chuỗi kết quả trong trường hợp chuỗi này nằm ở cuối của chuỗi str
  • \b: Trả về chuỗi kết quả trong trường hợp chuỗi này nằm ở  đầu hoặc cuối của một từ trong chuỗi str . (tuỳ thuộc vào vị trí đặt \b ở đầu hoặc cuối của chuỗi trong biểu thức Regex).
  • \B: Trả về chuỗi kết quả trong trường hợp chuỗi này không nằm ở vị trí đầu hoặc cuối của một từ trong chuỗi str. (tuỳ thuộc vào vị trí đặt \B ở đầu hoặc cuối của chuỗi trong biểu thức Regex)
  • ?=: Trả về chuỗi kết quả nếu theo sau chuỗi đó là một chuỗi nào đó được chỉ định trước
  • ?!: Trả về chuỗi kết quả nếu sau chuỗi đó không phải là một chuỗi nào đó được chỉ định trước

Các lớp ký tự trong Regex

  • [xyz]: Tìm một ký tự bất kỳ nằm trong tập ký tự  giữa cặp dấu ngoặc vuông
  • [a-z]: Tìm một ký tự bất kỳ nằm trong tập ký tự từ  a đến z
  • [^xyz]: Tìm một ký tự bất kỳ không thuộc tập ký tự giữa cặp dấu ngoặc vuông.
  • . (chấm): Tìm bất kỳ một ký tự nào không phải là ký tự xuống dòng mới  hoặc ký tự kết thúc dòng.
  • \w: Tìm một ký tự dạng a-Z, 0-9 và dấu gạch dưới.
  • \W: Ngược lại với \w
  • \d: Tìm một ký tự thuộc tập ký tự từ 0 đến 9
  • \D: Ngược lại với \d: Tìm một ký tự không nằm trong tập ký tự từ 0 đến 9
  • \s: Tìm ký tự khoảng trắng (dấu cách)
  • \S:Tìm một ký tự không phải là dấu cách

Ví dụ: Tìm tất cả các ký tự là số trong chuỗi cho trước

str = "So 1, so 2, so 3";
document.write(str.match(/[0-9]/g));
//Hoặc có thể sử dụng như sau:
document.write(str.match(/d/g));

Phép lặp trong regex

RegEx cho phép tìm kiếm lặp bên trong biểu thức Regex:

  • {x}: Lặp một ký tự  hoặc một biểu thức con trước đó x lần
  • {x,y}: Lặp một ký tự hoặc một biểu thức con trước đó từ x đến y lần
  • {x,}: Lặp một ký tự hoặc một biểu thức con trước đó >= x lần
  • ?: Lặp một ký tự hoặc một biểu thức con trước đó 0 hoặc 1 lần
  • *: Lặp một ký tự hoặc một biểu thức con trước đó >=0 lần
  • +: Lặp một ký tự hoặc một biểu thức con trước đó >=1 lần

Tags:

Nếu bạn thấy bài viết hữu ích, hãy nhấn +1 và các liên kết chia sẻ để website ngày càng phát triển hơn. Xin cám ơn bạn!

Nếu là khách, bạn phải đăng ký tài khoản và kích hoạt tài khoản để bình luận được hiển thị ở đây.
Thông tin kích hoạt gửi đến mail của bạn.

Tin mới hơn

Tin cũ hơn

Lên trên đầu