2016/03/05

【教學】正規表示式 Regular Expression 語法規則

正規表示式,又名正規表示法、常規表示法、規則運算式,它常用於比對字串,語法只要看懂後其實非常簡單,這篇文章就來紀錄一下正規表示式的一些語法規則,以便日後查詢用,順便也分享給各位。

正規表示式 線上驗證工具:





結果:

符號說明:
符號
說明
範例
成立條件
不成立條件
^
比對字串開始位置
"^A""ABC""CBA"
$
比對字串結束位置
"A$""CBA""ABC"
*
比對符號前的字元重複零次以上
"A*""AAA"
+
比對符號前的字元重複一次以上
"A+""AB" "AAB""B"
?
比對符號前的字元重複零次或一次
"^A?$""A""AA"
.
比對除了"\n"以外的所有字元
".""A"""
|
比對符號兩邊的字元
"A|B|C""A" "B" "C""D"
{n}
比對{n}前的字元n次,n必為正整數。
"^A{2}$""AA""A" "AAA"
{n,}
比對{n,}前的字元至少n次,n必為正整數。
"^A{2,}$""AA" "AAA""A"
{n,m}
比對{n,m}前的字元至少n次但最多m次,n,m均為正整數。
"^A{2,4}$""AAA" "AAAA""AAAAA"
[xyz]
比對中括號內的任意字元。
"^[XYZ]$""X" "Y""GG" "XX"
[^xyz]
比對不再中括號內的任意字元。
"^[^XYZ]$""A""Y" "GG"
[a-z]
比對a到z的任意字元,另有[0-9]和[A-Z]等用法
"^[^0-9]$""A""5"
如需比對保留字元,請在前面加上\,例如\*。

特殊字元:
\b
比對單詞結尾,也就是空格。
"cat\b""cat""cats"
\B
比對非單詞結尾。
"dog\B""dogs""dog"
\d
比對一個數字字元,同[0-9]。
"\d""123""ABC"
\D
比對一個非數字字元,同[^0-9]。
"\D""ABC""123"
\f
比對換頁符號
---
\n
比對換行符號
---
\t
比對TAB
---
\r
比對Enter符號
---
\s
比對任何空白字元,包括換頁、換行、Enter符號等
---
\S
比對任何非空白字元
---
\w
比對字母大小寫、數字與底線,同[A-Za-z0-9_]
"\w""A1c""/"
\W
比對非字母大小寫、數字與底線,同[^A-Za-z0-9_]
"\W""@""A1c"
\xn
比對n的ASCII碼符號,n須為16進制
"\x41""A""B"
\num
參照比對前num個正規式。
"^(\x41)(\1)$""AA""A"
\un
比對Unicode字元,n為四個十六進制數字。
"\u6211""我""他"

學習正規表示式最快的方法就是把語法看熟,多練習,多看別人的正規式並理解。

程式語法:
JavcSirept
regex = new RegExp("09[0-9]{8}");
num = "0912345678";
if(num.test(regex)){
 alert("OK");
}else{
 alert("NO");
}

其他程式:
#Java
str.matches([A-Z]);
資料來源: https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F
https://atedev.wordpress.com/2007/11/23/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E5%BC%8F-regular-expression/

沒有留言:

張貼留言