30 đoạn mã Regex hữu ích cho nhà phát triển web
Biểu thức chính quy là một công cụ mạnh mẽ cần có trong vành đai công cụ của mọi nhà phát triển. Chúng có thể khớp với một chuỗi các ký tự dựa trên các tham số rất phức tạp, điều này có thể giúp bạn tiết kiệm rất nhiều thời gian khi xây dựng các trang web động.
Các nhà phát triển web phải đối mặt với các nhiệm vụ khác với các nhà phát triển phần mềm nhưng vẫn còn nhiều nguyên tắc cơ bản về mã giống nhau. Biểu thức chính quy (hoặc regex) có một đường cong học tập ban đầu dốc, nhưng họ có thể cực kỳ mạnh mẽ khi được sử dụng đúng cách.
Phần khó nhất là học cú pháp và học cách viết mã regex của riêng bạn từ đầu. Để tiết kiệm thời gian, tôi đã tổ chức 30 đoạn mã regex khác nhau mà bạn có thể kết hợp vào các dự án phát triển. Và vì regex không giới hạn trong một ngôn ngữ, bạn có thể áp dụng các đoạn mã này cho bất kỳ thứ gì từ JavaScript đến PHP hoặc là Con trăn.
1. Mật khẩu cường độ
^ (? =. * [AZ]. * [AZ]) (? =. * [! @ # $ & *]) (? =. * [0-9]. * [0-9]) (? = . * [az]. * [az]. * [az]). 8 $
Kiểm tra độ mạnh của mật khẩu thường chủ quan nên không có câu trả lời chính xác tuyệt đối. Nhưng tôi cảm thấy đoạn mã regex này là điểm khởi đầu tuyệt vời nếu bạn không muốn viết trình kiểm tra độ mạnh mật khẩu của riêng mình từ đầu. (Nguồn)
2. Màu thập lục phân
\ # ([a-fA-F] | [0-9]) 3, 6
Lĩnh vực phát triển web có mặt khắp nơi với mã màu hex. Đoạn mã regex này có thể được sử dụng để kéo các mã hex khớp từ bất kỳ chuỗi nào cho bất kỳ mục đích nào. (Nguồn)
3. Xác thực địa chỉ email
/[A-Z0-9._%+-[+@[A-Z0-9-[+.+.[A-Z[ đũa2,4 Bolog / ig
Một trong những nhiệm vụ phổ biến nhất đối với nhà phát triển là kiểm tra xem một chuỗi có được định dạng theo kiểu địa chỉ email hay không. Có nhiều biến thể khác nhau để thực hiện nhiệm vụ này, vì vậy liên kết SitePoint này cung cấp hai đoạn mã riêng biệt để kiểm tra cú pháp e-mail đối với một chuỗi. (Nguồn)
4. Địa chỉ IPv4
/\b(?:(?:25[0-5[|2[0-4[[0-9[|[01[?[0-9[[0-9[?)\.) nb3 (?: 25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) \ B /
Tương tự như một địa chỉ email là địa chỉ IP điển hình được sử dụng để xác định một máy tính cụ thể truy cập Internet. Biểu thức chính quy này sẽ kiểm tra một chuỗi để xem nó có tuân theo cú pháp địa chỉ IPv4 không. (Nguồn)
5. Địa chỉ IPv6
(([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 | :) | (: [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]))
Ngoài ra, bạn có thể muốn kiểm tra một địa chỉ cho cú pháp IPv6 mới hơn với đoạn mã regex nâng cao hơn này. Sự khác biệt là nhỏ mặc dù quan trọng trong quá trình phát triển. (Nguồn)
6. Dấu phân cách hàng ngàn
/ \ d 1,3 (? = (\ d 3) + (?! \ d)) / g
Các hệ thống đánh số truyền thống yêu cầu một dấu phẩy, dấu chấm hoặc một số dấu khác mỗi chữ số thứ ba với số lớn hơn. Mã regex này hoạt động trên bất kỳ số nào và sẽ áp dụng bất kỳ dấu nào bạn chọn cho mỗi chữ số thứ ba tách thành hàng nghìn, hàng triệu, v.v. (Nguồn)
7. Chuẩn bị HTTP để siêu liên kết
if (! s.match (/ ^ [a-zA-Z] +: \ / \ //)) s = 'http: //' + s;
Cho dù bạn đang làm việc với JavaScript, Ruby hay PHP, biểu thức chính quy này có thể chứng minh 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, hãy thêm vào đó. (Nguồn)
8. Kéo tên miền từ URL
/https?:\/\/(?:[-\w[+\.)?([-\w[+)\.\w+(?:\.\w+)?\/?.*/i
Mỗi tên miền trang web chứa giao thức ban đầu (HTTP hoặc HTTPS) và thường là một tên miền phụ cộng với đường dẫn trang bổ sung. Bạn có thể sử dụng đoạn mã này để cắt bỏ tất cả những điều đó và chỉ trả lại tên miền mà không cần rườm rà. (NguồnL
9. Sắp xếp từ khóa theo số lượng từ
^ [^ \ s] * $ khớp chính xác với từ khóa 1 từ ^ [^ \ s] * \ s [^ \ s] * $ khớp chính xác với từ khóa 2 từ ^ [^ \ s] * \ s [^ \ s] * khớp với từ khóa ít nhất 2 từ (2 trở lên) ^ ([^ \ s] * \ s) 2 [^ \ s] * $ khớp chính xác với từ khóa 3 từ ^ ([^ \ s] * \ s ) 4 [^ \ s] * $ khớp với các từ khóa 5 từ trở lên (đuôi dài)
Người dùng Google Analytics và Công cụ quản trị trang web sẽ thực sự thích biểu thức thông thường này. Nó có thể sắp xếp và sắp xếp các từ khóa dựa trên số lượng từ được sử dụng trong tìm kiếm.
Điều này có thể cụ thể bằng số (nghĩa là chỉ có 5 từ) hoặc nó có thể khớp với một phạm vi từ (nghĩa là 2 từ trở lên). Khi được sử dụng để sắp xếp dữ liệu phân tích, đây là một biểu thức mạnh mẽ. (Nguồn)
10. Tìm một chuỗi Base64 hợp lệ trong PHP
\? php [\ t] eval \ (base64_decode \ (\ '(([A-Za-z0-9 + /] 4) * ([A-Za-z0-9 + /] 3 = | [A-Za-z0-9 + /] 2 ==)?) 1 \ '\) \) \;
Nếu bạn là một nhà phát triển PHP thì đến một lúc nào đó, bạn có thể cần phân tích cú pháp mã để tìm kiếm các đối tượng nhị phân được mã hóa Base64. Đoạn mã này có thể được áp dụng cho tất cả các mã PHP và sẽ kiểm tra mọi chuỗi Base64 hiện có. (Nguồn)
11. Số điện thoại hợp lệ
^ \ +? \ d 1,3? [-.]? \ (? (?: \ D 2,3) \)? [-.]? \ d \ d \ d [-.]? \ d \ d \ d \ d $
Ngắn, ngọt ngào, và cho điểm. Mã regex này sẽ xác nhận bất kỳ cú pháp số điện thoại truyền thống nào chủ yếu dựa trên kiểu số điện thoại của Mỹ.
Vì điều này có thể biến thành một chủ đề khá phức tạp, tôi khuyên bạn nên lướt qua chủ đề Stack này để có câu trả lời chi tiết hơn. (Nguồn)
12. Khoảng trắng hàng đầu & Trailing
^ [\ s] + | [\ s] + $
Sử dụng đoạn mã này để kéo ra khoảng trắng hàng đầu / dấu từ chuỗi. Điều này có thể không phải là một vấn đề lớn nhưng đôi khi nó có thể ảnh hưởng đến đầu ra khi được kéo từ cơ sở dữ liệu hoặc áp dụng cho mã hóa tài liệu khác. (Nguồn)
13. Kéo hình ảnh nguồn)
\< *[img][^\>] * [src] * = * [\ "\ '] 0,1 ([^ \" \' \>] *)
Nếu vì lý do nào đó bạn cần lấy nguồn của hình ảnh trực tiếp từ HTML, đoạn mã này là giải pháp hoàn hảo. Mặc dù nó có thể chạy trơn tru trên phần phụ trợ, thay vào đó, các nhà phát triển JS nên sử dụng phương thức .attr () của jQuery cho giao diện. (Nguồn)
14. Xác thực ngày ở định dạng DD / MM / YYYY
^ (? :(?: 31 (\ / | - | \.) (?: 0? [13578] | 1 [02])) \ 1 | (? :(?: 29 | 30) (\ / | - | \.) (?: 0? [1,3-9] | 1 [0-2]) \ 2)) (? :(?: 1 [6-9] | [2-9] \ d)? \ d 2) $ | ^ (?: 29 (\ / | - | \.) 0? 2 \ 3 (? :(? :(?: 1 [6-9] | [2-9] \ d )? (?: 0 [48] | [2468] [048] | [13579] [26]) | (? :(?: 16 | [2468] [048] | [3579] [26]) 00) )) $ | ^ (?: 0? [1-9] | 1 \ d | 2 [0-8]) (\ / | - | \.) (? :(?: 0? [1-9]) | (?: 1 [0-2])) \ 4 (? :(?: 1 [6-9] | [2-9] \ d)? \ D 2) $
Ngày là khó khăn vì chúng có thể xuất hiện dưới dạng văn bản + số hoặc chỉ là số với các định dạng khác nhau. PHP có một hàm ngày tuyệt vời nhưng đây không phải luôn là lựa chọn tốt nhất khi kéo một chuỗi thô. Thay vào đó, hãy xem xét sử dụng biểu thức chính quy này được thực hiện cho cú pháp ngày cụ thể này. (Nguồn)
15. Kết hợp ID video trên YouTube
/http:\/\/(?:youtu\.be\/|(?:[az[ đũa2,3 Bolog\.)?youtube\.com\/watch(?:\?|#\!) =) ([\ w -] 11). * / Gi
YouTube đã giữ cấu trúc URL giống nhau trong nhiều năm vì nó chỉ hoạt động. Đây cũng là trang web chia sẻ video phổ biến nhất trên web, vì vậy video trên YouTube có xu hướng thu hút nhiều lưu lượng truy cập nhất.
Nếu bạn cần lấy ID video YouTube từ URL, mã regex này là hoàn hảo và sẽ hoạt động hoàn hảo cho tất cả các biến thể của cấu trúc URL YouTube. (Nguồn)
16. Mã số hợp lệ
/ \ b (?: ISBN (? ::? |))? ((?: 97 [89])? \ d 9 [\ dx]) \ b / i
Sách in tuân theo một hệ thống đánh số được gọi là ISBN. Điều này có thể trở nên khá khó khăn khi bạn xem xét sự khác biệt giữa ISBN-10 và ISBN-13.
Tuy nhiên, đoạn mã đáng kinh ngạc này cho phép bạn xác thực số ISBN và kiểm tra xem đó là ISBN10 hay 13. Tất cả mã được viết bằng PHP, vì vậy điều này sẽ rất hữu ích cho các nhà phát triển web. (Nguồn)
17. Kiểm tra mã Zip
^ \ d 5 (?: [- \ s] \ d 4)? $
Người tạo ra đoạn trích này không chỉ phát hành tác phẩm của mình miễn phí mà còn dành thời gian để giải thích. Bạn sẽ thấy đoạn mã này hữu ích cho dù bạn phù hợp với mã zip 5 chữ số thông thường hoặc phiên bản 9 chữ số dài hơn.
Hãy nhớ rằng điều này chủ yếu dành cho hệ thống mã zip của Mỹ nên điều này có thể yêu cầu điều chỉnh cho các quốc gia khác. (Nguồn)
18. Tên người dùng Twitter hợp lệ
/ @ ([A-Za-z0-9 _] 1,15) /
Đây là một đoạn mã rất nhỏ để khớp với tên người dùng Twitter được tìm thấy trong một chuỗi. Nó kiểm tra @mention cú pháp hoàn hảo để tự động quét nội dung của một tweet (hoặc tweet). (Nguồn)
19. Số thẻ tín dụng
^ (?: 4 [0-9] 12 (?: [0-9] 3)? | 5 [1-5] [0-9] 14 | 6 (?: 011 | 5 [ 0-9] [0-9]) [0-9] 12 | 3 [47] [0-9] 13 | 3 (?: 0 [0-5] | [68] [0-9 ]) [0-9] 11 | (?: 2131 | 1800 | 35 \ d 3) \ d 11) $
Xác thực số thẻ tín dụng thường yêu cầu một nền tảng an toàn được lưu trữ ở nơi khác trực tuyến. Nhưng regex có thể được sử dụng cho các yêu cầu tối thiểu của số thẻ tín dụng thông thường.
Một danh sách toàn diện hơn về mã cho các thẻ riêng lẻ có thể được tìm thấy ở đây. Điều này bao gồm Visa, MasterCard, Discover và nhiều thứ khác. (Nguồn)
20. Tìm thuộc tính CSS
^ \ s * [a-zA-Z \ -] + \ s * [:] 1 \ s [a-zA-Z0-9 \ s. #] + [;] 1
Có thể hiếm khi chạy regex qua CSS nhưng nó cũng không phải là một tình huống cực kỳ kỳ lạ.
Đoạn mã này có thể được sử dụng để lấy ra mọi thuộc tính và giá trị CSS phù hợp từ các bộ chọn riêng lẻ. Nó có thể được sử dụng cho bất kỳ lý do nào, có thể để xem các đoạn CSS hoặc để loại bỏ các thuộc tính trùng lặp. (Nguồn)
21. Nhận xét HTML
Nếu vì bất kỳ lý do gì bạn cần xóa tất cả các nhận xét khỏi một khối HTML, thì đây là mã regex để sử dụng. Cùng với biểu thức, bạn sẽ tìm thấy một ví dụ PHP bằng cách sử dụng preg numplace. (Nguồn)
22. URL hồ sơ Facebook
/(?:http:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)? (?: [\ w \ -] * \ /) * ([\ w \ -] *) /
Facebook cực kỳ phổ biến và đã trải qua nhiều chương trình URL khác nhau. Trong trường hợp bạn đang lấy URL hồ sơ từ người dùng, có thể hữu ích để phân tích chuỗi và xác nhận rằng chúng được cấu trúc đúng. Đoạn mã này có thể làm chính xác điều đó và nó hoàn hảo cho tất cả các liên kết kiểu FB. (Nguồn)
23. Kiểm tra phiên bản Internet Explorer
^. * MSIE [5-8] (?: \. [0-9] +)? (?!. * Cây đinh ba \ / [5-9] \. 0). * $
Việc Microsoft chuyển sang Edge đã không được nhất trí và nhiều người vẫn dựa vào Internet Explorer cổ điển. Các nhà phát triển thường cần kiểm tra các phiên bản IE để xử lý sự không nhất quán với các công cụ kết xuất.
Đoạn mã này có thể được sử dụng trong JavaScript để kiểm tra tác nhân trình duyệt dựa trên phiên bản Internet Explorer (5-11) nào đang được sử dụng. (Nguồn)
24. Giá chiết xuất
/(\$[0-9,[+(\.[0-9THER đũa2spl)?)/
Giá cả có nhiều định dạng chứa số thập phân, dấu phẩy và ký hiệu tiền tệ. Biểu thức chính quy này có thể kiểm tra tất cả các định dạng khác nhau này để lấy giá từ bất kỳ chuỗi nào. (Nguồn)
25. Tiêu đề thư điện tử
/\b[A-Z0-9._%+-[+@(?:[A-Z0-9-[+\.)+[A-Z[ đũa2,6 Bolog\b / i
Với một dòng mã này, bạn có thể phân tích cú pháp qua tiêu đề email để rút ra “đến” thông tin từ tiêu đề. Nó có thể được sử dụng song song với nhiều email được nối với nhau.
Nếu bạn muốn tránh regex cho nhiệm vụ này, thay vào đó bạn có thể dựa vào thư viện phân tích cú pháp. (Nguồn)
26. Phù hợp với một Filetype đặc biệt
/ ^ (. * *. (?! = html_html | class|js)$))? [^. ^.
Khi bạn đang xử lý các định dạng tệp khác nhau như .xml, .html và .js, nó có thể giúp kiểm tra các tệp cả cục bộ và được tải lên bởi người dùng. Đoạn mã này kéo một phần mở rộng tệp để kiểm tra xem nó có hợp lệ từ một loạt các tiện ích mở rộng hợp lệ có thể thay đổi khi cần không. (Nguồn)
27. Ghép chuỗi URL
/[-a-zA-Z0-9@:%_\+.~#?&//=[ đũa2,256 Bolog\.[az[ đũa2,4 Bolog\b (\ / [ -9 @:% _ \ +. ~ #? & // =] *)? / Gi
Đoạn mã này có thể được sử dụng cho cả chuỗi HTTPS và HTTP để kiểm tra xem văn bản có khớp với cú pháp tên miền TLD truyền thống hay không. Ngoài ra còn có một triển khai đơn giản của biểu thức chính quy này bằng RegExp của JavaScript. (Nguồn)
28. Nối thêm =”Không theo” để Liên kết
(] *) (href = "https ?: //) ((?! (?: (?: www \.)? '. Imode (' | (?: www \.)? ', $ Follow_list).') ) [^ "] +)" ((?!. * \ brel =) [^>] *) (?: [^>] *)>
Nếu bạn đang làm việc với một loạt mã HTML, việc áp dụng lao động thủ công vào các nhiệm vụ lặp đi lặp lại có thể là khủng khiếp. Biểu thức thông thường là hoàn hảo cho dịp này và chúng sẽ tiết kiệm rất nhiều thời gian.
Đoạn mã này có thể kéo tất cả các liên kết neo từ một khối HTML và nối thêm quan hệ”Không theo” thuộc tính cho mọi yếu tố. Nhà phát triển đã viết mã này là đủ tốt để xuất bản biểu thức thô cộng với một ví dụ hoạt động trong PHP.
29. Kết hợp truy vấn phương tiện
/ @ media ([^ ] +) \ ([\ s \ S] +?) \ s * / g
Phân tách các truy vấn phương tiện CSS thành các tham số và thuộc tính của chúng. Điều này có thể giúp bạn phân tích CSS bên ngoài theo cách sạch hơn với trọng tâm trực tiếp hơn về cách mã hoạt động. (Nguồn)
30. Cú pháp tìm kiếm của Google
/([+-[?(?:'.+?'|".+?"|[ucci+\-] 1 [^] *)) / g
Bạn có thể xây dựng mã regex của riêng mình để thao tác văn bản có thể tìm kiếm bằng cú pháp nhãn hiệu của Google. Dấu cộng (+) biểu thị các từ khóa bổ sung và dấu trừ (-) biểu thị các từ nên bỏ qua và xóa khỏi kết quả.
Đó là một đoạn mã khá phức tạp nhưng được sử dụng đúng cách, nó có thể cung cấp cơ sở để xây dựng thuật toán tìm kiếm của riêng bạn. (Nguồn)
Gói lại
Con đường để làm chủ regex dài nhưng bổ ích nếu bạn gắn bó với nó. Ngoài các công cụ regex điển hình, cách tốt nhất để nghiên cứu là thông qua sự lặp lại. Hãy thử xây dựng các ứng dụng web dựa trên các đoạn regex này để tìm hiểu cách chúng hoạt động trong một ứng dụng web hoạt động thực sự. Và nếu bạn có đoạn trích khác để đề xuất, bạn có thể đăng chúng trong khu vực bình luận bên dưới.
Hãy đọc ngay bây giờ:
50 đoạn CSS hữu ích mỗi nhà thiết kế nên có