Regex là gì? Cách Tạo Regular Expression trong JavaScript

Regex là gì? ưu và nhược điểm của Regex. Các ký tự và cách tạo một Regular Expressio trong JavaScript. Tham khảo bài viết sau nhé!

Regex là gì?

Regex là viết tắt của “Regular Expression” (Biểu thức chính quy) trong lập trình và xử lý ngôn ngữ tự nhiên. Nó là một chuỗi các ký tự đặc biệt được sử dụng để tìm kiếm và tương tác với các chuỗi ký tự khác theo một mô hình cụ thể.

Regex là gì? Cách Tạo Regular Expression trong JavaScript
Regex là gì?

Regular Expressions cho phép bạn thực hiện các hoạt động như tìm kiếm, thay thế, và trích xuất thông tin từ các chuỗi dữ liệu phức tạp một cách linh hoạt và hiệu quả. Nó có thể được sử dụng trong nhiều ngôn ngữ lập trình và ứng dụng khác nhau, bao gồm Python, JavaScript, Perl, và nhiều ngôn ngữ khác, để thực hiện các tác vụ liên quan đến xử lý chuỗi.

Đánh giá ưu và nhược điểm của Regex

Ưu điểm của Regex

  • Regex cho phép so khớp dữ liệu đầu vào một cách chi tiết và cụ thể, giúp tìm lỗi và xử lý dữ liệu dễ dàng.
  • Nó cung cấp khả năng ràng buộc dữ liệu đầu vào một cách nhanh chóng và chính xác, hạn chế dữ liệu không hợp lệ.

Nhược điểm của Regex

  • Việc sử dụng Regex đôi khi phức tạp và rườm rà, yêu cầu người dùng phải có tư duy logic và tập trung cao.
  • Sự trừu tượng của các biểu thức chính quy có thể khiến việc nắm bắt và hiểu chúng trở nên khó khăn đối với một số người.
  • Mỗi ngôn ngữ lập trình hỗ trợ cú pháp Regex theo cách riêng, dẫn đến khả năng tạo ra các biểu thức không khớp như mong muốn nếu không sử dụng đúng cách.

Tổng hợp các ký tự cơ bản trong Regular Expression

Dưới đây là danh sách các cú pháp cơ bản của Regular Expression:

Sửa đổi biểu thức

iTìm kiếm không phân biệt bất kỳ chữ cái hoa hay chữ thường.
mTìm kiếm nhiều dòng
uTìm kiếm các mẫu đúng trong chuỗi được mã hóa bởi UTF-8.

Ký tự thường

a | bTìm ký tự khớp với a hoặc b.
[0-9]Tìm ký tự khớp với số từ 0 đến 9
[a-z]Tìm ký tự khớp với các chữ cái từ a đến z
[abc]Chỉ khớp với chữ a, b hoặc c
[^abc]Không khớp với a, b hoặc c.

Ký tự đặc biệt

\dSố bất kỳ (tương đương với [0-9])
\DKý tự không phải là số (tương đương với [^0-9])
\sKhoảng trắng
\SKhông phải là khoảng trắng
\wKý tự chữ (tương đương với [a-zA-Z0-9_]).
\WKý tự không phải chữ (tương đương với [^a-zA-Z0-9_])
\bKý tự thuộc a-z, A-Z, 0-9 hoặc _
|:Tìm ra kết quả phù hợp cho bất kỳ một trong số các mẫu tương tự như OR
.Chỉ tìm một trường hợp của bất kỳ ký tự nào (ngoại trừ xuống dòng)
^Tìm kết quả phù hợp ở đầu của một chuỗi
$Tìm kết quả phù hợp ở cuối của chuỗi

Bộ định lượng

n+Khớp với bất kỳ chuỗi nào có chứa ít nhất một n.
n*Khớp với bất kỳ chuỗi nào không có hoặc có nhiều lần xuất hiện của n
n?Khớp với bất kỳ chuỗi nào có chứa 0 hoặc 1 lần xuất hiện của n
n{x}Khớp với bất kỳ chuỗi nào chứa chuỗi x lặp lại chính xác n lần

Khớp nhóm

()Chọn ra các phần từ của mẫu được sử dụng để so khớp
(?: x)Khớp với x nhưng không lưu trữ kết quả khớp chính xác

Các mẫu biểu thức Regex ngắn gọn hay sử dụng

Dưới đây là một số biểu thức Regex thông dụng và hữu ích:

1. Biểu thức Regex so khớp số điện thoại ở Việt Nam:

Biểu thức: \+?(0|84)\d{9}

Sử dụng để kiểm tra số điện thoại bắt đầu bằng 0 hoặc 84 kèm theo 9 số cuối.

2. Biểu thức Regex so khớp tên riêng viết hoa:

Biểu thức: (?:[A-Z]\p{L}+ ){1,3}[A-Z]\p{L}+

Sử dụng để tìm kiếm các tên riêng được viết hoa.

3. Biểu thức Regex dùng để kiểm tra thẻ HTML:

Biểu thức: <[^>]*>

Sử dụng để kiểm tra việc đóng mở ngoặc của các thẻ trong HTML.

4. Biểu thức Regex so khớp URL:

(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?

^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\’/\\\+&amp;%\$#\=~])*$

((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)

^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$

5. Biểu thức Regex so khớp Email:

^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

^\w+[\w-\.]*\@\w+((-\w+)|(\w*))\.[a-z]{2,3}$

^.+@.+$

^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$

^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}

Hướng dẫn cách tạo Regular Expression trong JavaScript

Để tạo một Regular Expression trong JavaScript, bạn có hai cách khác nhau. Đó là:

Cú pháp 1: Sử dụng đối tượng RegExp:

var regexConst = new RegExp(“pattern”, “flags”);

Cú pháp 2: Sử dụng cặp dấu gạch chéo ngược:

var regexConst = /pattern/flags;

Trong đó:

  • pattern là chuỗi Regular Expression mà bạn muốn tạo.
  • flags là chuỗi chứa các cờ để cấu hình Regular Expression (ví dụ: “i” cho việc so khớp không phân biệt chữ hoa chữ thường).

Đọc thêm: Mô hình MVC trong Java là gì? Ví dụ cụ thể ứng dụng mô hình MVC

FAQS ( Câu Hỏi Thường Gặp)

Nguồn học về Regex đâu là phổ biến nhất?

Nếu muốn tìm hiểu thêm về Regex, RegexLib.com là một nguồn tài liệu hữu ích. Tại đây, bạn có thể tiếp cận các hướng dẫn và tài liệu liên quan đến việc sử dụng Regex.

Những điều cần lưu ý khi sử dụng Regex là gì?

Khi bạn sử dụng Regex, hãy luôn ghi chú lại mẫu bạn đang xử lý và mục tiêu bạn muốn đạt được. Tránh phụ thuộc quá nhiều vào trí nhớ vì sau một thời gian, bạn có thể quên đi ý nghĩa cụ thể của các mẫu Regex mình đã tạo. Ghi chú lại luôn là một thói quen tốt trong quá trình lập trình.

Các trang nào có thể giải thích ý nghĩa của Regex?

Bạn có thể vào các trang như Regex101.com, rubular.com để kiểm tra các biểu thức Regex của mình. Chỉ cần nhập biểu thức của bạn và chuỗi cần kiểm tra, bạn sẽ nhận được kết quả ngay lập tức. Đây là những nguồn tài liệu hữu ích để bạn tự tin và sáng tạo với biểu thức Regex của riêng mình.

Lời kết

Trên đây là một số thông tin cơ bản về Regular Expressions hoặc Regex mà LANIT đã tổng hợp và chia sẻ. Hy vọng rằng nó đã giúp bạn hiểu rõ hơn về chủ đề này. Hãy tiếp tục theo dõi LANIT để có thêm thông tin và kiến thức hữu ích.

LANIT JSC

Được thành lập năm 2017, Công ty cổ phần công nghệ và truyền thông LANIT (LANIT JSC) đã sớm khẳng định được vị trí của mình là một trong những đơn vị cung cấp dịch vụ lưu trữ dữ liệu hàng đầu với chất lượng tốt nhất, cùng chi phí hợp lý nhất.

Chat với chúng tôi qua Zalo!
Chat với chúng tôi qua Zalo!