Regexp hữu dụng

by Viet Anh Nguyen
  
 
  
 ~ 1 minute read

RegExp (Regular Expression - Biểu thức chính quy) là các đoạn mã biểu diễn một “search pattern” dùng nhiều trong việc tìm kiếm, thay thế, verify dữ liệu trong nhiều ngôn ngữ. Nếu biết tận dụng nó có thể trở thành một công cụ mạnh giúp lập trình viên trong nhiều việc khác nhau.

Tôi tạo trang này để sưu tập các quy tắc sử dụng Regexp để sử dụng mỗi lần cần tới.

Basic

? : 0-1 kí tự.
* : 0-nhiều kí tự.
+ : một hay nhiều kí tự liên tiếp giống kí tự trước +. “ab+c” match “abc”, “abbc”, “abbbc” nhưng không match với “ac”.
{n} : match kí tự đằng trước n lần.
{min,} : match kí tự đằng trước ít nhất min lần.
{min,max} : match kí tự đằng trước từ min đến max lần.
gray|grey : “gray” or “grey”.
() : Để nhóm các biểu thức

Metacharacter Description

^ : Bắt đầu với
. : 1 kí tự
[ ] : match 1 kí tự giống 1 trong các kí tự trong ngoặc. “[ab]”, “[a-z]”
[^ ] : match 1 kí tự KHÔNG các kí tự trong ngoặc. “[^ab]”, “[^a-z]”
$ : kí tự cuối

Specific characters

\s: space
\S: non-space
\b: match 1 phân cách giữa kí tự word-class (A-Z, a-z, 0-9, _) và kí tự không phải word-class. Giống với (^\w|\w$|\W\w|\w\W).

$string1 = "Hello World\n";
if ($string1 =~ m/llo\b/) {
  print "There is a word that ends with 'llo'.\n";
}

\w: (A-Z, a-z, 0-9, _)
\W: Ngược lại với \w
\d: Số
\D: Không phải số
\A: Bắt đầu xâu.

$string1 = "Hello\nWorld\n";
if ($string1 =~ m/\AH/) {
  print "$string1 is a string ";
  print "that starts with 'H'.\n";
}

Output:

Hello
World
 is a string that starts with 'H'

\z: Kết thúc xâu

$string1 = "Hello\nWorld\n";
if ($string1 =~ m/d\n\z/) {
  print "$string1 is a string ";
  print "that ends with 'd\\n'.\n";
}

Output:

Hello
World
 is a string that ends with 'd\n'.

Mã màu hex : \#([a-fA-F]|[0-9]){3, 6}

Email: /[A-Z0-9._%+-][email protected][A-Z0-9-]+.+.[A-Z]{2,4}/igm

Tên miền từ URL: /https?:\/\/(?:[-\w]+\.)?([-\w]+)\.\w+(?:\.\w+)?\/?.*/i

Lấy link ảnh từ thẻ img: \< *[img][^\>]*[src] *= *[\"\']{0,1}([^\"\'\ >]*)

Kiểm tra đuôi file: /^(.*\.(?!(htm|html|class|js)$))?[^.]*$/i

Để xoá nguyên 1 dòng bắt đầu với “start”, tìm: /^start.*\n/

Disqus comment

Lưu ý: Hệ thống comment Disqus có thể không được load thành công do bị chặn bởi nhà mạng. Để khắc phục, đổi DNS về 8.8.8.8 hoặc 8.8.4.4 .

Designed by @vietanhdev.
Copyrighted