Chia sẻ 10 Regular Expression hữu ích mà Developer nên biết
Bài đăng này đã không được cập nhật trong 3 năm
Phần khó nhất trong lập trình là học các cú pháp và học cách viết regular expression (biểu thức chính quy – viết tắt là regex) của riêng bạn. Để tiết kiệm thời gian cho mọi người, mình đã chọn 30 đoạn code regex khác nhau mà bạn hoàn toàn có thể sử dụng trong các dự án của bạn. Và vì regex không bị giới hạn ở một ngôn ngữ cụ thể nào, bạn có thể áp dụng các đoạn sau đây bằng bất kỳ ngôn ngữ nào.
1. Độ mạnh của password
Kiểm tra độ của mật khẩu thường là vấn đề tuỳ theo quan điểm mỗi người vì vậy sẽ không có biểu thức chính xác tuyệt đối. Nhưng tôi cảm thấy rằng regex này là một điểm khởi đầu tuyệt vời.
^(?=.*[A-Z].*[A-Z])(?=.*[!@#$&*])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8}$
2. Mã màu theo hệ hexa
Mã màu hex hiện rất phổ biến trong lĩnh vực phát triển web. Đoạn regex này có thể được sử dụng để lấy mã hex thích hợp từ bất kỳ chuỗi nào cho bất kỳ mục đích nào.
\#([a-fA-F]|[0-9]){3, 6}
3. Xác thực địa chỉ email
Một trong những nhiệm vụ phổ biến nhất của lập trình viên là kiểm tra xem chuỗi vừa nhập có phải là địa chỉ email hợp lệ hay không.
Đối với PHP, bạn có thể sử dụng hàm filter_var: filter_var($email, FILTER_VALIDATE_EMAIL)
/[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]{2,4}/igm
4. Address IPv4
Tương tự như địa chỉ email là địa chỉ IP – tính năng này được sử dụng để xác định một máy tính cụ thể để truy cập Internet. Cụm regex này sẽ kiểm tra một chuỗi có khớp với cú pháp của IPv4 addresses hay không.
/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/
5. Address IPv6
Hoặc nếu bạn thích tìm hiểu một regex tiên tiến hơn thì đây là regex để kiểm tra IPv6 address. Tuy sự khác biệt là rất nhỏ, mặc dù nó có vai trò quan trọng trong quá trình phát triển.
(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
6. Thousands separator
Mã regex này hoạt động trên bất kỳ dãy số nào và sẽ sự dụng bất kỳ dấu nào để phân đơn vị cho mỗi 3 chữ số cách nhau như hàng ngàn, hàng triệu,…
/\d{1,3}(?=(\d{3})+(?!\d))/g
7. Thêm HTTP trước link
Cho dù bạn đang làm việc với JavaScript, Ruby hay PHP, regex này vẫn có thể rất hữu ích. Nó sẽ kiểm tra bất kỳ chuỗi URL nào để xem nó có tiền tố HTTP / HTTPS hay không và nếu không, sẽ thêm HTTP / HTTPS thích hợp.
var url = "some.url";
if (!url.match(/^[a-zA-Z]+:\/\//)) {
s = 'http://' + url;
}
8. Lấy tên miền từ URL
Mỗi tên miền chứa trang web trong giao thức (HTTP hoặc HTTPS) và đôi khi là đường dẫn, tên miền phụ với các trang bổ sung. Bạn có thể sử dụng đoạn regex này để lược bỏ tất cả và chỉ trả về tên miền.
/https?:\/\/(?:[-\w]+\.)?([-\w]+)\.\w+(?:\.\w+)?\/?.*/i
9. Sắp xếp từ khoá bằng cách đếm số từ
Những người sử dụng Google Analytics và Webmaster Tools sẽ thực sự thích regex này. Nó có thể sắp xếp các từ khoá dựa trên các từ được sử dụng để tìm kiếm.
Có thể quy định với một con số cụ thể (tức là chỉ có 5 từ) hoặc có thể phù hợp với nhiều từ (tức là 2 hoặc nhiều hơn). Khi được sử dụng để phân loại và phân tích dữ liệu, đây là một trong những regex mạnh nhất.
^[^\s]*$ // matches exactly 1-word keyword
^[^\s]*\s[^\s]*$ // matches exactly 2-word keyword
^[^\s]*\s[^\s]* // matches keywords of at least 2 words (2 and more)
^([^\s]*\s){2}[^\s]*$ // matches exactly 3-word keyword
^([^\s]*\s){4}[^\s]*$ // matches 5-words-and-more keywords (longtail)
10. Find a valid Base64 string in PHP
Nếu bạn là một lập trình viên PHP, đôi khi bạn phải phân tích trong code để tìm các chuỗi Base64 được mã hóa dưới dạng nhị phân (ví dụ như shell hidden trong PHP). Đoạn regex này có thể áp dụng cho tất cả mã PHP và sẽ kiểm tra bất kỳ chuỗi Base64 nào hiện có.
\?php[ \t]eval\(base64_decode\(\'(([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?){1}\'\)\)\;
Nếu anh em có những đoạn regex hay nào khác thì chia sẻ dưới comment nhé
-- Lược dịch từ Codingsec --
All rights reserved