VPS
Hosting
Email
Máy chủ
Firewall Anti DDoS
Tên Miền
SSL
3
3

Regex là gì? Các cú pháp cơ bản trong Regular Expression

1049
Lượt xem
Home Lập trình Regex là gì? Các cú pháp cơ bản trong Regular Expression

Bạn đã bao giờ cảm thấy mệt mỏi khi phải xử lý một chuỗi ký tự hoặc đoạn văn bản trong khi lập trình hay chưa? Bạn đang tốn thời gian viết các đoạn code dài ngoằng, lặp đi, lặp lại chỉ để kiểm tra ô input có hợp lệ hay không? Đừng lo vì Regular Expression sẽ là trợ thủ của bạn trong những trường hợp như này. Vậy Regular Expression hay Regex là gì? Cùng Vietnix tìm hiểu chi tiết ngay dưới bài viết dưới đây nhé!

Regex là gì?

Regex (hay RegExp hay RegExr) là cụm từ viết tắt của Regular Expression có nghĩa là biểu thức chính quy. Đây là một chuỗi các ký tự đặc biệt được định nghĩa để tạo nên các mẫu (pattern). Chúng được sử dụng để phân tích cú pháp, sự trùng khớp, tìm kiếm, thay thế trong các chuỗi và đoạn ký tự.

Regex có nghĩa là biểu thức chính quy
Regex có nghĩa là biểu thức chính quy

Regex sẽ được dùng trong hầu hết các ngôn ngữ lập trình hiện nay. Đây được xem là một công cụ đắc lực và vô cùng mạnh mẽ dùng để phân tích, validate dữ liệu đầu vào.

banner hosting gif

Ưu và nhược điểm của Regex

Cùng Vietnix tìm hiểu Ưu và nhược điểm của biểu thức quy chuẩn ở dưới đây nhé.

Ưu điểm

Vì các biểu thức chính quy có tác dụng để so khớp các dữ liệu đầu vào chi tiết và cụ thể hơn. Bạn có thể có thể kiểm tra, tìm lỗi và xử lý các tiện ích tìm kiếm các chuỗi từ người dùng nhập vào dựa vào những mẫu quy định sẵn. Chính vì đó nên ta có thể ràng buộc được những chi tiết các dữ liệu đầu vào nhanh chóng và chính xác.

Nhược điểm

Khó nắm bắt được vì nó khá trừu tượng và rắc rối. Regular expression đòi hỏi bạn phải có một chút tư duy logic và sự tập trung. Vì nó được hỗ trợ bởi hầu hết các ngôn ngữ lập trình hiện. Tuy nhiên điểm hạn chế lại là mỗi ngôn ngữ lại được hỗ trợ với biểu thức cách khác nhau. Nếu không bạn có thể sẽ tạo ra biểu thức không khớp như kết quả mình muốn.

Các cú pháp cơ bản Regular Expression

Nguyên tắc vận hành chính của biểu thức Regex là so khớp dựa vào mẫu. Mẫu sẽ được xây dựng từ những quy tắc căn bản của biểu thức.

Regex mang đến rất nhiều các ứng dụng hữu ích khác nhau. Tuy nhiên, nếu nhìn chung thì nền tảng mà chuỗi các ký tự mô tả một bộ chuỗi các ký tự khác. Nhưng có một điều chắc chắn rằng, tất cả đều phải tuân theo một quy tắc và cú pháp nhất định.

Bạn có thể tham khảo và áp dụng các cú pháp cơ bản của Regular Expression mà Vietnix đã tổng hợp dưới đây:

  • abcdef... : Chữ.
  • 123... : Số.
  • \d: Bất cứ số nào.
  • \D : Bất kì gì trừ số ra.
  • . : Bất cứ ký tự nào.
  • [abc] : Chỉ được là a, b hoặc c.
  • [^abc] : Không được có a, b và c.
  • [0-9] : Số từ o đến 0.
  • \w: Bất cứ ký tự chữ nào.
  • \W: Bất kì gì trừ chữ ra.
  • {m}: Lặp lại m lần.
  • {m, n} : Lặp lại tối thiểu m lần và tối đa n lần.
  • “^”: Đây là ký tự bắt đầu của chuỗi nhập. Ví dụ ^A thì A chính là ký tự đầu tiên của chuỗi.
  • “$”: Đây là ký tự kết thúc chuỗi nhập. Ví dụ như $B thì B ở đây chính là ký tự cuối cùng của chuỗi.
  • “.”: Được dùng để chỉ bất kỳ cứ ký tự nào, tuy nhiên ký tự xuống dòng bị ngoại trừ.
  • “*”: Nếu ký tự này xuất hiện, bạn có thể hiểu rằng, các ký tự trước đó có thể lặp 0 hoặc nhiều lần. Ví dụ, “ri*t” thì bạn có thể ngầm hiểu là riit hoặc riiit, hoặc có thể là rt.
  • “+”: Khác với ký tự “** , khi ký tự này xuất hiện bạn ngầm hiểu ký tự trước đó có thể lặp 1 hoặc nhiều lần. Ví dụ, “ri+t” có thể là rit, riit, riiiit,…

Ứng dụng Regex

Regex thường được ứng dụng với 2 mục đích chính, đó là:

  • Kiểm tra tính hợp lệ của dữ liệu: Email, URL có hợp lệ không, kiểm tra số điện thoại Việt Nam. Hay kiểm tra độ dài của câu có nằm trong một khoảng (x, y),…
  • Tìm kiếm và thay thế: bạn có thể regex với chưa đến 10 dòng code, file nhỏ mở text editor là xong và không cần đến code.
Ứng dụng Regex
Ứng dụng Regex

Cách tạo ra 1 Regular Expressions trong JS

Regex trong javascript là một chuỗi nhưng không được bao quanh bởi cặp dấu nháy đơn ‘ hoặc nháy kép “. Mà nó là chuỗi được bao quanh bởi cặp dấu /. Có 2 để bạn có thể tạo ra, đó là:

Cú pháp: new RegExp(pattern<, flags>)

Ví dụ: var regexConst = new RegExp("abc"); Hoặc có thể sử dụng dấu /

Cú pháp: /pattern/flags.

Tạo 1 Regular Expressions trong JS
Tạo 1 Regular Expressions trong JS

Trong đó: pattern là một chuỗi Regular Expression Flags thông số cấu hình cho chuỗi pattern và nó có tổng các giá trị. i là so khớp không quan tâm đến chữ cái hoa hay chữ thường. g là so khớp toàn bộ chuỗi cần tìm. Còn m là so khớp luôn cả các dữ liệu xuống dòng (multiline).

Ví dụ: khi Pattern kiểm tra chuỗi có tồn tại chữ “mbachulski.com” không thì sẽ không phân biệt giữa chữ hoa chữ thường. Nó sẽ quét và tìm toàn bộ tài liệu:

var pattern = /mbachulski.com/igm;patternmbachulski.comflagsigm.

Cách viết Regex chi tiết

Regex có những cách viết điển hình và được nhiều lập trình viên sử dụng. Bao gồm so khớp chuỗi, tách chuỗi, tìm kiếm trong chuỗi, thay thế chuỗi… Cách viết chi tiết bạn có thể tham khảo ngay dưới đây:

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

Biểu thứcÝ nghĩa
iTìm kiếm không phân biệt chữ cái hoa hay chữ thường.
mTìm kiếm nhiều dòng.
uĐối sánh chính xác các mẫu được mã hóa bởi UTF-8.

Ký tự thường

Biểu thứcÝ nghĩaChú ý
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ừ 1 đến 9
[a – z]Khớp với những chữ từ a – z
[abc]Có thể khớp với chữ a, b hoặc là c
[^abc]Không khớp với a, b hoặc là cDấu ^ nếu xuất hiện sau dấu ngoặc vuông thì là có nghĩa là phủ định
\dSố bất kỳThay thế cho [0-9]
\DKý tự không phải là sốThay thế [^0-9]
\sKý tự khoảng trắng
\SKhông là ký tự của khoảng trắngThay thế [^\s]
\wKý tự chữ
\WKý tự không phải chữThay thế [^\w]
\bKý tự thuộc a – z hoặc A – Z hoặc 0-9 hoặc là _

Ký tự đặc biệt

Biểu thứcÝ nghĩa
|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 và khớp với bất kỳ ký tự đơn nào ngoài \
^Tìm ra kết quả phù hợp ở đầu của một chuỗi
$Tìm ra kết quả phù hợp ở cuối của chuỗi
\dTìm một chữ số
\sTìm một ký tự khoảng trắng
\bTìm một kết quả phù hợp ở đầu một từ hoặc cuối một từ
\uxxxxTìm ký tự unicode được chỉ định bởi số lục phân xxxx
/Bắt đầu hoặc kết thúc chuỗi 
\Biểu diễn một ký tự ngay sau, từ ký tự đặc biệt thành ký tự thường và ngược lại

Bộ định lượng

Biểu thứcÝ nghĩa
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ó hay 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 hay 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 1 chuỗi X n
n{x,y}Khớp với bất kỳ những chuỗi có chứa chuỗi X với chuỗi Y n
n{x,}Đối sánh bất kỳ những chuỗi có chứa ít nhất là 1 chuỗi gồm X n

Khớp nhóm

Biểu thứcÝ nghĩa
()Chọn ra các phần từ của mẫu được sử dụng để làm đối sánh
(? : x)Khớp với x nhưng không rõ chính xác kết quả khớp
x(?=y)Chỉ khớp được với x nếu như ngay sau x là y
X(?!y)Chỉ khớp được với x nếu ngay sau x không là y

Câu hỏi thường gặp

Regex ở trong Python là gì?

Regex hay còn gọi là biểu thức chính quy, là một chuỗi các ký tự cấu thành một mẫu tìm kiếm. Regex có thể được dùng để kiểm tra xem thử một chuỗi có chứa mẫu tìm kiếm được chỉ định hay không.

Regex có phải là một ngôn ngữ lập trình không?

Regex có các thuật ngữ, điều kiện và cú pháp riêng biệt, nhưng theo một nghĩa nào đó, nó cũng được coi là một ngôn ngữ lập trình nhỏ. Regex có thể được dùng để thêm, xóa hoặc cô lập tất cả các loại văn bản và dữ liệu. Nó có thể được dùng như một lệnh soạn thảo văn bản đơn giản. Ví dụ như là tìm kiếm, thay thế hay là ngôn ngữ xử lí mạnh mẽ văn bản của nó.

Lời kết

Bên trên là những thông tin chi tiết về Regular Expressions hay Regex mà Vietnix đã tổng hợp và chia sẻ đến bạn. Hy vọng đã mang đến bạn cái nhìn rõ hơn về thuật ngữ này. Đừng quên theo dõi Vietnix để được cập nhật thêm nhiều thông tin và kiến thức bổ ích nhé! Cảm ơn bạn đã theo bài viết của chúng tôi.

Chia sẻ bài viết
Đánh giá
5/5 - (22 votes)
Kết nối với mình qua
Mình là Bo - admin của Quản Trị Linux. Mình đã có 10 năm làm việc trong mảng System, Network, Security và đã trải nghiệm qua các chứng chỉ như CCNP, CISSP, CISA, đặc biệt là chống tấn công DDoS. Gần đây mình trải nghiệm thêm Digital Marketing và đã hòan thành chứng chỉ CDMP của PearsonVUE. Mình rất thích được chia sẻ và hỗ trợ cho mọi người, nhất là các bạn sinh viên. Hãy kết nối với mình nhé!
Đăng ký nhận tin
Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vietnix
Bài viết liên quan
Bình luận
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
Yêu cầu Vietnix gọi lại

Vui lòng nhập thông tin để chúng tôi liên hệ lại với bạn