Regex là gì? 5+ biểu thức Regex áp dụng được ngay
Thịnh Văn Hạnh 05/12/2022 1439 Lượt xem Chia sẻ bài viết
Regex là gì? Bạn đã biết những biểu thức Regex “nhỏ mà có võ” này chưa? Cùng BKNS tìm hiểu về Regex và những biểu thức áp dụng mang đến hiệu quả bất ngờ này nhé.
Tóm Tắt Bài Viết
Regex là gì?
Regex (cách viết khác RegEx) được viết tắt từ Regular Expression. Tạm dịch: biểu thức chính quy. Nếu là một lập trình viên, bạn sẽ rất quen thuộc với việc sử dụng Regex để so khớp tổ hợp ký tự trong một chuỗi. Các ví dụ thường thấy như: số điện thoại, email hay URL web,…
Mỗi ngôn ngữ lập trình sẽ có cách thể hiện biểu thức Regex hơi khác đôi chút. Tuy nhiên, điều này không làm ảnh hưởng đến hoạt động của Regex. Bạn chỉ cần nắm những kiến thức cơ bản về Regex và tùy biến theo ngôn ngữ đang sử dụng.
Regex được Stephen Cole Kleene – một nhà toán học thực hiện mô tả lần đầu tiên vào năm 1951 bằng cách sử dụng các ký hiệu trong toán. Ban đầu, ông gọi là regular events (sự kiện thường xuyên). Cho đến cuối thế kỉ 20, việc sử dụng Regex trong khoa học máy tính dần trở nên phổ biến hơn.
Ứng dụng của Regex trong việc so khớp
Đây là một trong những ứng dụng điển hình và được sử dụng nhiều bật nhất bởi các lập trình viên. Các ví dụ điển hình thường gặp như:
- So khớp và kiểm tra tính hợp lệ của Email
- So khớp và kiểm tra tính hợp lệ của URL
- So khớp và kiểm tra tính hợp lệ của số điện thoại
- So khớp các ký tự trong một chuỗi bắt đầu bằng a kết thúc bằng z
- Và vô số trường hợp khác.
Với Regex, bạn có thể tìm kiếm và kiểm tra bất cứ thứ gì với chuỗi miễn là chúng có một quy tắc rõ ràng.
Ví dụ: Nếu muốn tìm một chuỗi ký tự ngẫu nhiên bắt đầu bằng a kết thúc bằng z ở giữa có chữ số, bạn có thể viết một biểu thức Regex đơn giản như sau:
^a.*[0-9].*z$
Bạn nhập ngẫu nhiên 1 vài chuỗi vào, trong đó, 2 chuỗi được phát hiện có chính xác những điều kiện: bắt đầu bằng a kết thúc bằng z ở giữa có chữ số là:
aDrgu3432z và a8w38484z.
Ứng dụng của Regex trong việc tìm kiếm và thay thế
Có lẽ bạn từng thao tác Ctrl + H trong Word để tìm kiếm một ký tự hay một từ nào đó bất kỳ.
Giờ đây, bạn có thể Ctrl + H trong các phần mềm lập trình kết hợp với sức mạnh của Regex để việc tìm kiếm – thay thế của bạn trở nên dễ dàng hơn bao giờ hết.
Ví dụ, bạn có một loạt link như sau và bạn muốn chuyển đổi từ https://www.tên-miền.xxx thành <a href=”https://www.tên-miền.xxx”target=”_blank”>tên-miền.xxx</a>. Khi sử dụng if/else bạn sẽ mất rất nhiều thời gian.
Thay vào đó, bạn chỉ cần 2 dòng lệnh trong hộp thoại Find and Replace trong Regex như sau:
- Find: (http://www\.(+))
- Replace: <a href=”$1″ target=”_blank”>$2></a>
Kết quả bạn sẽ có được như trong ảnh.
Bạn có thể tiếp tục tùy biến thêm và thực hiện các hoạt động như: Tách chuỗi, kết hợp với grep,… Nhằm giảm thiểu thời gian làm việc với nội dung hơn.
Ý nghĩa ký tự trong Regex
Một số siêu ký tự cơ bản
- ^ Bắt đầu một chuỗi ký tự. Trường hợp dấu ^ xuất hiện tiếp nối phía sau dấu ngoặc vuông là phủ định những gì có bên trong ngoặc [^
- $ Kết thúc một chuỗi ký tự
- . Chọn mọi ký tự ngoại trừ \n newline
- | Phép tương đương
- {…} Tập hợp ký tự
- […] Tập hợp ký tự phải chính xác để khớp
- (…) Tạo nhóm logic
- * 0 hoặc nhiều hơn biểu thức trước đó.
- + 1 hoặc nhiều hơn biểu thức trước đó.
- ? 0 or 1 so sánh đúng tối thiểu 1 ký tự
- / Dùng để bắt đầu hoặc kết thúc chuỗi
- \ Dùng để tạo ra một ký tự thay thế đặc biệt thành ký tự thường và ngược lại. Bạn có thể tham khảo ảnh bên dưới để hiểu hơn.
Một số biểu thức thường thấy
- a|b Trùng khớp với a hoặc trùng khớp với b
- [0-9] TÌm kiếm trùng khớp với chữ số từ 0 tới 9
- [a-z] Tìm kiếm miễn sao có trong khối ký tự từ a tới z
- [abc] Trùng khớp với 1 trong 3 a, b, c
- [^abc] Loại trừ khớp với 3 ký tự a, b và c
Một số biểu thức Regex mẫu để áp dụng ngay
Các biểu thức trên mạng thường hay được tranh cãi về đọ đúng sai. Tuy nhiên việc sử dụng một biểu thức có sẵn sẽ tiết kiệm thời gian hơn nhiều so với việc bạn tự tạo lập chúng.
Để thử nghiệm, bạn có thể dán biểu thức vào đây và kiểm thử.
Một số biểu thức Regex ngắn gọn thường dùng
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 9 số cuối phía sau.
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 những tên riêng được viết hoa
Biểu thức Regex dùng để kiểm tra thẻ HTML
Biểu thức: <[^>]*>
Sử dụng để kiểm tra đóng mở ngoặc của các thẻ trong HTML.
Một số biểu thức so khớp phức tạp hơn
Biểu thức Regex so khớp URL
- (http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
- ^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\’/\\\+&%\$#\=~])*$
- ((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)
- ^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$
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}$
Kết luận
Đến đây có lẽ bạn đã hiểu được Regex là gì cũng như sự tiện lợi của nó trong việc tra cứu và so khớp các thông tin. Sử dụng đúng lúc Regex với các biểu thức sẵn có chắc chắn sẽ giúp công việc của bạn được nhanh chóng và hiệu quả hơn.
Đừng quên đọc thêm nhiều bài viết hữu ích khác tại BKNS.
[mautic type=”form” id=”6″]
Có thể bạn cũng quan tâm đến:
Website Là Gì? Cách Tạo Website Miễn Phí Đơn Giản Nhất
Tiêu chí của một website chuẩn SEO là gì?
Giao diện website gồm những thành phần nào?
Follow BKNS để cập nhật thêm nhiều thông tin mới nhất trên nền tảng mạng xã hội:
+ Fanpage: https://www.facebook.com/bkns.vn
+ Youtube: https://www.youtube.com/c/BknsVn1
+ Pinterest: https://www.pinterest.com/bknsvn/
+ LinkedIn: https://www.linkedin.com/company/bkns-vn/