Hiển thị các bài đăng có nhãn REGEX. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn REGEX. Hiển thị tất cả bài đăng

2018-11-13

Hướng dẫn về Regex

Hướng dẫn về Regex - Một bản tóm tắt nhanh bằng các ví dụ

Cụm từ thông dụng (regex hoặc regexp) cực kỳ hữu ích trong việc trích xuất thông tin từ bất kỳ văn bản nào bằng cách tìm kiếm một hoặc nhiều kết quả phù hợp của mẫu tìm kiếm cụ thể (ví dụ: chuỗi ký tự ASCII hoặc unicode cụ thể).
Các trường của phạm vi ứng dụng từ xác nhận hợp lệ đến phân tích cú pháp / thay thế chuỗi, đi qua việc dịch dữ liệu sang các định dạng khác và trích xuất web.
Một trong những tính năng thú vị nhất là khi bạn đã học cú pháp, bạn có thể sử dụng công cụ này trong hầu hết các ngôn ngữ lập trình (JavaScript, Java, VB, C #, C / C ++, Python, Perl, Ruby , Delphi, R, Tcl, và nhiều người khác) với sự phân biệt nhỏ nhất về sự hỗ trợ của các tính năng nâng cao và các phiên bản cú pháp được hỗ trợ bởi các công cụ).
Hãy bắt đầu bằng cách xem xét một số ví dụ và giải thích.

Chủ đề cơ bản

Neo - ^ và $

^ Các         kết quả phù hợp với bất kỳ chuỗi nào bắt đầu bằng  The -> Hãy thử nó! 
end $         khớp với chuỗi kết thúc bằng  kết thúc
^ Kết thúc chuỗi kết hợp chính xác $ (bắt đầu và kết thúc bằng Kết thúc )
roar         khớp với bất kỳ chuỗi nào có tiếng gầm trong đó

Định lượng - * +? và {}

abc *         khớp với một chuỗi có ab theo sau là 0 hoặc nhiều hơn c -> Hãy thử nó! 
abc +         khớp với chuỗi có ab theo sau bởi một hoặc nhiều c
abc ?         khớp với một chuỗi có ab theo sau là 0 hoặc 1 c
abc {2}       khớp với chuỗi có ab theo sau là 2 c
abc {2,}      khớp với một chuỗi có ab theo sau bởi 2 hoặc nhiều hơn c
abc {2,5}     khớp với chuỗi có ab theo sau là 2 đến 5 c
a (bc) *       khớp với chuỗi có tiếp theo là 0 hoặc nhiều bản sao của chuỗi bc
a (bc) {2,5}   khớp với chuỗi có tiếp theo là 2 đến 5 bản của chuỗi bc

Toán tử OR - | hoặc là []

a (b | c)      khớp với một chuỗi có dấu sau là b hoặc c -> Thử nó!
một [bc]       giống như trước

Các lớp ký tự - \ d \ w \ s và.

\ d          phù hợp với một ký tự đơn là một chữ số -> Hãy thử nó! 
\ w          khớp với một ký tự từ (ký tự chữ và số cộng với gạch dưới) -> Dùng thử!
\ s          khớp với ký tự khoảng trắng (bao gồm các tab và ngắt dòng)
.          phù hợp với bất kỳ nhân vật -> Hãy thử nó! 
Sử dụng  .toán tử cẩn thận vì lớp thường hoặc lớp nhân vật phủ định (chúng tôi sẽ đề cập đến tiếp theo) nhanh hơn và chính xác hơn.
\d\wVà \scũng trình bày phủ nhận của họ với \D\Wvà \Stương ứng.
Ví dụ, \Dsẽ thực hiện kết quả nghịch đảo đối với kết quả thu được \d.
\ D          khớp với một ký tự không phải là chữ số -> Hãy thử! 
Để được thực hiện theo nghĩa đen, bạn phải thoát khỏi các ký tự ^.[$()|*+?{\bằng dấu gạch chéo ngược \vì chúng có ý nghĩa đặc biệt.
\ $ \ d        phù hợp với chuỗi có $ trước một chữ số -> Dùng thử! 
Lưu ý rằng bạn có thể khớp với các ký tự không in được như tab \t, dòng mới \n, trả về vận chuyển \r.

Cờ

Chúng tôi đang học cách xây dựng một regex nhưng quên một khái niệm cơ bản: cờ .
Một regex thường đi kèm với dạng này , trong đó mẫu tìm kiếm được phân cách bởi hai ký tự gạch chéo Cuối cùng, chúng ta có thể chỉ định một cờ với các giá trị này (chúng ta cũng có thể kết hợp chúng với nhau):/abc//
  • g (toàn cầu) không trở lại sau trận đấu đầu tiên, khởi động lại các tìm kiếm tiếp theo từ cuối trận đấu trước đó
  • m (nhiều dòng) khi được bật ^và $sẽ khớp với phần bắt đầu và kết thúc của một dòng, thay vì toàn bộ chuỗi
  • i (không nhạy cảm) làm cho toàn bộ biểu thức không phân biệt chữ hoa chữ thường (ví dụ /aBc/isẽ khớp AbC)

Chủ đề trung gian

Nhóm và chụp - ()

a ( bc )            dấu ngoặc đơn tạo một nhóm chụp với giá trị bc -> Hãy thử nó! 
một (: bc ) * sử dụng : chúng tôi vô hiệu hóa các nhóm chụp -> Hãy thử nó! 
a (? <foo> bc )      bằng cách sử dụng ? <foo> chúng tôi đặt tên cho nhóm -> Dùng thử!
Toán tử này rất hữu ích khi chúng ta cần trích xuất thông tin từ chuỗi hoặc dữ liệu bằng ngôn ngữ lập trình ưa thích của bạn. Bất kỳ nhiều lần xuất hiện được một số nhóm chụp sẽ được hiển thị dưới dạng một mảng cổ điển: chúng ta sẽ truy cập vào các giá trị của chúng chỉ định sử dụng một chỉ mục trên kết quả của trận đấu.
Nếu chúng ta chọn đặt tên cho các nhóm (sử dụng ), chúng ta sẽ có thể lấy các giá trị nhóm bằng cách sử dụng kết quả phù hợp như một từ điển mà các phím sẽ là tên của mỗi nhóm.(?<foo>...)

Biểu thức khung - []

[abc]             phù hợp với một chuỗi mà có hoặc là một hoặc ab hoặc ac ->  giống như a | b | c -> Hãy thử nó! 
[ac]             giống như trước
[a-fA-F0-9]       một chuỗi đại diện cho một chữ số thập lục phân đơn lẻ, không phân biệt chữ hoa chữ thường -> Hãy dùng thử! 
[0-9]%            một chuỗi có ký tự từ 0 đến 9 trước dấu%
[^ a-zA-Z]         một chuỗi không có chữ cái từ a đến z hoặc từ A đến Z. Trong trường hợp này dấu ^ được sử dụng làm từ chối biểu thức -> Hãy thử nó! 
Hãy nhớ rằng bên trong khung biểu thức tất cả các ký tự đặc biệt (bao gồm cả dấu gạch chéo ngược \) mất quyền hạn đặc biệt của chúng: vì vậy chúng tôi sẽ không áp dụng "quy tắc thoát".

Tham lam và lười biếng

Các định lượng ( * + {}) là toán tử tham lam, do đó chúng mở rộng kết quả phù hợp với chúng thông qua văn bản được cung cấp.
Ví dụ: <.+>đối sánh <div>simple div</div>trong Để chỉ bắt được thẻ, chúng tôi có thể sử dụng thẻ  để làm cho nó lười biếng:This is a <div> simple div</div> testdiv?
<. +?>             khớp với bất kỳ ký tự nào một hoặc nhiều lần được bao gồm bên trong <> , mở rộng khi cần -> Hãy thử! 
Lưu ý rằng một giải pháp tốt hơn nên tránh việc sử dụng có  .lợi cho một regex nghiêm ngặt hơn:
<[^ <>] +>          khớp với bất kỳ ký tự nào ngoại trừ <hoặc> một hoặc nhiều lần được bao gồm bên trong <> -> Hãy dùng thử! 

Chủ đê nâng cao

Ranh giới - \ b và \ B

\ b abc \ b           thực hiện tìm kiếm "chỉ toàn bộ từ" -> Dùng thử! 
\bđại diện cho một neo giống như dấu mũ (tương tự $và ^) khớp với một bên là một ký tự từ (như \w) và mặt kia không phải là ký tự từ (ví dụ nó có thể là đầu chuỗi hoặc ký tự khoảng trắng).
Nó đi kèm với nó phủ định , \BĐiều này khớp với tất cả các vị trí \bkhông khớp và có thể là nếu chúng ta muốn tìm mẫu tìm kiếm được bao quanh hoàn toàn bởi các ký tự từ.
\ B abc \ B           chỉ phù hợp nếu mẫu được bao quanh hoàn toàn bởi các ký tự từ -> Hãy thử!

Tham chiếu ngược - \ 1

( [abc] ) \ 1               bằng cách sử dụng \ 1 nó khớp với cùng một văn bản được so khớp bởi nhóm chụp đầu tiên -> Hãy thử nó! 
([abc]) ( [de] ) \ 2 \ 1 chúng ta có thể sử dụng \ 2 (\ 3, \ 4, v.v.) để xác định cùng một văn bản được so khớp bởi nhóm chụp thứ hai (thứ ba, thứ tư, v.v.) -> Thử đi! 
(? <foo> [abc] ) \ k <foo>    chúng tôi đặt tên t foo o nhóm và chúng tôi tham khảo nó sau này ( \ k <foo> ). Kết quả là giống nhau của regex đầu tiên -> Hãy thử nó!

Nhìn về phía trước và nhìn phía sau -  (? =) Và  (? <=)

d (? = r )        phù hợp với chỉ khi d được theo sau bởi r , nhưng r sẽ không là một phần của kết hợp regex tổng thể -> Hãy thử nó! 
(? <= r ) d phù hợp với chỉ một d nếu được bắt đầu bởi một r , nhưng r sẽ không là một phần của kết hợp regex tổng thể -> Hãy thử nó! 
Bạn cũng có thể sử dụng toán tử phủ định!
d (?! r ) chỉ        khớp với d nếu không được theo sau bởi r , nhưng r sẽ không là một phần của kết hợp regex tổng thể -> Hãy thử nó! 
(? <! r ) d chỉ phù hợp với một d nếu không được bắt đầu bằng r , nhưng r sẽ không là một phần của trận đấu regex tổng thể -> Hãy thử nó! 

30 đoạn biểu thức chính quy mà lập trình viên web nên biết

Biểu thức chính quy (hay regex) là một công cụ mạnh mẽ mà mỗi nhà phát triển nên biết. Nó có thể khớp với một chuỗi các ký tự dựa trên các thông số rất phức tạp mà 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.
Dù các nhà phát triển Web phải đối mặt với nhiều nhiệm vụ khác nhau hơn so với các nhà phát triển phần mềm, nhưng đa số trong đó vẫn có cùng mã nền tảng. Biểu thức chính quy hơi khó học lúc đầu, nhưng có thể rất mạnh mẽ khi được sử dụng một cách chính xác.
Phần khó khăn nhất là việc tìm hiểu 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 đã chọn ra 30 đoạn mã regex khác nhau mà bạn có thể sử dụng trong các dự án của bạn. Và kể từ khi regex không giới hạn cho một ngôn ngữ cụ thể, bạn có thể áp dụng những đoạn dưới đây vào bất cứ ngôn ngữ nào từ Javascript đến PHP hoặc Python.

1. Độ mạnh của mật khẩu

^(?=.*[A-Z].*[A-Z])(?=.*[!@#$&*])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8}$
Kiểm tra độ mạnh của một mật khẩu thường là 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 regex này là một điểm khởi đầu tuyệt vời nếu bạn không muốn phải viết riêng hàm kiểm tra độ mạnh mật khẩu của bạn từ đầu.

2. Mã màu Hex

\#([a-fA-F]|[0-9]){3, 6}
Mã màu hex 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 phù hợp từ chuỗi bất kỳ cho bất cứ mục đích nào.

3. Xác thực địa chỉ Email

/[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]{2,4}/igm
Một trong những nhiệm vụ phổ biến nhất đối với một nhà phát triển là kiểm tra một chuỗi có phải là một địa chỉ Email hay không. Đối với PHP, các bạn có thể sử dụng hàm filter_var: filter_var($email, FILTER_VALIDATE_EMAIL)

4. Địa chỉ IPv4

/\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/
Tương tự như một địa chỉ email là địa chỉ IP - đượ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 hay không.

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}|:)|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]))
Hoặc có thể bạn sẽ muốn kiểm tra một địa chỉ theo cú pháp IPv6 mới hơn với đoạn regex nâng cao hơn này. Sự khác biệt là rất nhỏ mặc dù nó quan trọng trong quá trình phát triển.

6. Dấu phân cách hàng nghìn

/\d{1,3}(?=(\d{3})+(?!\d))/g
Mã regex này hoạt động trên bất kỳ số nào và sẽ áp dụng bất cứ dấu phân cách nào bạn chọn cho mỗi chữ số thứ ba phân tách thành hàng ngàn, hàng triệu,...

7. Thêm HTTP vào trước liên kết

if (!s.match(/^[a-zA-Z]+:\/\//))
{
    s = 'http://' + s;
}
Cho dù bạn đang làm việc trong JavaScript, Ruby hay PHP, biểu thức này có thể tỏ ra rất hữu ích. Nó sẽ kiểm tra bất kỳ chuỗi URL nào để xem nếu nó có tiền tố HTTP/HTTPS hay không, và nếu không, thêm vào trước chuỗi đó cho phù hợp.

8. Lấy tên miền từ URL

/https?:\/\/(?:[-\w]+\.)?([-\w]+)\.\w+(?:\.\w+)?\/?.*/i
Mỗi tên miền trang web đều chứa giao thức ở đầu (HTTP hoặc HTTPS) và đôi khi có tên miền phụ với đường dẫn trang bổ sung. Bạn có thể sử dụng đoạn regex này để cắt qua tất cả những điều đó và chỉ trả lại tên miền.

9. Sắp xếp các từ khóa bằng cách đếm số 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)
Những ai dùng Google Analytics và Webmaster Tools sẽ thực sự thích biểu thức chính quy này. Nó có thể sắp xếp các từ khoá dựa trên số các từ được sử dụng trong một tìm kiếm.
Đây có thể là số lượng cụ thể (tức là chỉ có 5 từ) hoặc nó có thể phù hợp với một loạt các từ (tức là 2 hoặc nhiều hơn). Khi được sử dụng để sắp xếp và phân tích dữ liệu, nó là một trong những biểu thức chính quy mạnh mẽ.

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ì đôi khi bạn có thể cần phân tích qua code để tìm kiếm các đối tượng nhị phân đã mã hóa Base64 (ví dụ như tìm shell được giấu trong một tập tin PHP chẳng hạn). Đoạn regex này có thể áp dụng với tất cả code PHP và sẽ kiểm tra bất cứ chuỗi Base64 nào đang tồn tại.

11. Xác thực số điện thoại

^\+?\d{1,3}?[- .]?\(?(?:\d{2,3})\)?[- .]?\d\d\d[- .]?\d\d\d\d$
Ngắn gọn, ngọt ngào và đi thẳng vào vấn đề. Đoạn regex này sẽ xác thực bất cứ cú pháp số điện thoại nào dựa trên phong cách số điện thoại Mỹ.
Đ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 đọc lướt qua chủ đề stack nàycho câu trả lời chi tiết hơn.

12. Khoảng trắng ở đầu và cuối

^[ \s]+|[ \s]+$
Sử dụng đoạn mã này để lấy ra khoảng trắng ở đầu/cuối từ một chuỗi. Đây có thể không phải là một việc lớn, nhưng đôi khi nó ảnh hưởng đến đầu ra khi lấy kết quả ra từ một cơ sở dữ liệu hoặc áp dụng vào mã hóa tài liệu.

13. Lấy nguồn ảnh

\< *[img][^\>]*[src] *= *[\"\']{0,1}([^\"\'\ >]*)
Nếu vì một số lý do nào đó mà bạn cần lấy ra một nguồn ảnh trực tiếp từ HTML thì đ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 Backend, các nhà phát triển JS nên dựa vào phương thức .attr() của jQuery cho Frontend.

14. Xác thực ngày trong đị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})$
Các ngày 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 điều này không phải luôn là lựa chọn tốt nhất khi lấy ra từ một chuỗi thô (raw). Cân nhắc việc thay thế bằng cách sử dụng biểu thức chính quy này cho các cú pháp ngày cụ thể.

15. Khớp ID Video Youtube

/https?:\/\/(?:youtu\.be\/|(?:[a-z]{2,3}\.)?youtube\.com\/watch(?:\?|#\!)v=)([\w-]{11}).*/gi
Youtube đã giữ cấu trúc URL giống nhau trong nhiều năm chỉ bởi nó hoạt động. Đây cũng là trang chia sẻ video phổ biến nhất trên web, vì thế các video Youtube có xu hướng điều phối lưu lượng truy cập nhiều nhất.
Nếu bạn cần lấy ra một ID video Youtube từ một URL thì đoạn regex này là hoàn hảo và hoạt động tốt với tất cả các biến thể của cấu trúc URL Youtube.

16. Xác thực ISBN

/\b(?:ISBN(?:: ?| ))?((?:97[89])?\d{9}[\dx])\b/i
Sách được in theo một hệ thống số gọi là ISBN. Điều này có thể lấy 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 regex đáng kinh ngạc này cho phép bạn để xác nhận một số ISBN và kiểm tra xem nó là ISBN10 hay 13. Tất cả các mã được viết bằng PHP vì vậy điều này có thể tỏ ra đặc biệt hữu ích cho các nhà phát triển web.

17. Kiểm tra mã bưu điện

^\d{5}(?:[-\s]\d{4})?$
Tác giả của đoạn regex này không chỉ chia sẻ nó miễn phí mà còn dành thời gian để giải thích nó. Bạn sẽ thấy nó hữu ích cho dù bạn đang khớp một mã bưu điện loại 5 chữ số hay phiên bản dài 9 chữ số dài hơn.
Hãy nhớ rằng nó chủ yếu dành cho hệ thống mã bưu điện của Mỹ nên có thể bạn sẽ cần điều chỉnh cho các quốc gia khác.

18. Tên người dùng Twitter hợp lệ

/@([A-Za-z0-9_]{1,15})/
Đây là một đoạn mã regex rất nhỏ để khớp tên người dùng Twitter tìm thấy trong một chuỗi. Nó kiểm tra dựa trên cú pháp đề cập (@mention).

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})$
Chứng thực số thẻ tín dụng thường bắt buộc một nền tảng máy chủ an toàn. Nhưng regex có thể được sử dụng cho các yêu cầu tối thiểu của một số thẻ tín dụng điển hình.

20. Tìm thuộc tính CSS

^\s*[a-zA-Z\-]+\s*[:]{1}\s[a-zA-Z0-9\s.#]+[;]{1}
Có thể rất hiếm để chạy regex trên CSS nhưng nó không phải là một tình huống 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 khớp từ selector cụ thể. Nó có thể được sử dụng cho bất kỳ lý do nào, ví dụ như loại bỏ thuộc tính trùng lặp.

21. Loại bỏ chú thích HTML

<!--(.*?)-->
Nếu vì bất cứ lý do nào mà bạn cần phải loại bỏ tất cả các chú thích từ một khối HTML thì đây là mã regex cần dùng. Bạn sẽ tìm thấy một ví dụ PHP sử dụng preg_replace.

22. URL trang cá nhân Facebook

/(?:http:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-]*)/
Facebook rất phổ biến và có nhiều sự sắp đặt URL khác nhau. Trong một tình huống mà bạn đang lấy URL hồ sơ từ người sử dụng thì đoạn regex này 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 này có thể làm chính xác điều đó và nó hoàn hảo cho tất cả các kiểu liên kết FB.

23. Kiểm tra phiên bản Internet Explorer

^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/[5-9]\.0).*$
Trình duyệt IE vẫn đang có thị phần người dùng lớn và các nhà phát triển thường phải kiểm tra phiên bản IE để xử lý tính tương thích của trang web.
Đoạn này có thể được sử dụng trong JavaScript để kiểm tra phiên bản của Internet Explorer (5-11) đang được sử dụng dựa trên chuỗi User-Agent.

24. Bóc tách giá

/(\$[0-9,]+(\.[0-9]{2})?)/
Giá cả đi kèm trong một loạt các định dạng có chứa số thập phân, dấu phẩy và ký hiệu tiền tệ. Biểu thức này có thể kiểm tra tất cả các định dạng khác nhau để lấy ra một mức giá từ bất kỳ chuỗi nào.

25. Phân tích tiêu đề Email

/\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}\b/i
Với một dòng code này bạn có thể phân tích thông qua một tiêu đề email để lấy ra thông tin "to" từ tiêu đề. Nó có thể được sử dụng song song với nhiều email liên kết với nhau.

26. Khớp một loại tập tin cụ thể

/^(.*\.(?!(htm|html|class|js)$))?[^.]*$/i
Khi bạn đang làm việc với các định dạng tập tin khác nhau như .xml, .html và .js, nó có thể giúp kiểm tra các tập tin cả nội bộ (local) và được tải lên bởi người dùng. Đoạn này lấy ra một phần mở rộng tập tin để kiểm tra xem nó có giá trị nằm trong một danh sách các phần mở rộng hợp lệ hay không.

27. Khớp một chuỗi URL

/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi
Đoạn này có thể sử dụng cho cả chuỗi HTTP và HTTPS để kiểm tra xem nó có khớp với cú pháp tên miền mức cao nhất (TLD) hay không. Cũng có một phiên bản đơn giản hơn đoạn này sử dụng RegExp của JavaScript.

28. Thêm rel="nofollow" vào các liên kết

(<a\s*(?!.*\brel=)[^>]*)(href="https?://)((?!(?:(?:www\.)?'.implode('|(?:www\.)?', $follow_list).'))[^"]+)"((?!.*\brel=)[^>]*)(?:[^>]*)>
Nếu bạn đang làm việc với hàng loạt mã HTML có thể nó thật khủng khiếp khi phải làm thủ công các nhiệm vụ lặp đi lặp lại. Biểu thức chính quy là hoàn hảo cho công việc này và họ sẽ tiết kiệm được rất nhiều thời gian.
Đoạn regex này có thể lấy ra tất cả liên kết từ một khối HTML và thêm thuộc tính rel="nofollow" vào mỗi phần tử.

29. Khớp Media Query

/@media([^{]+)\{([\s\S]+?})\s*}/g
Chia tách các Media Query CSS vào từng 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 với sự tập trung trực tiếp hơn vào cách mà code hoạt động.

30. Cú pháp tìm kiếm Google

/([+-]?(?:'.+?'|".+?"|[^+\- ]{1}[^ ]*))/g
Bạn có thể xây dựng mã regex của riêng bạn cho các thao tác tìm kiếm nội dung bằng cách sử dụng cú pháp độc quyền của Google. Các dấu cộng (+) biểu thị các từ khóa bổ sung và dấu trừ (-) biểu thị rằng nên bỏ qua và loại bỏ khỏi kết quả.

Đó là một đoạn khá phức tạp nhưng được sử dụng đúng cách thì nó có thể cung cấp một cơ sở cho việc xây dựng thuật toán tìm kiếm của riêng bạn.