純文字比對
Hello, my name is Ben. Please visit my website at http://www.forta.com.
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP31kerR0T4dGVPBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0kTOyMjNxMTM5IjNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
這裡使用了普通文本正規表達式,他将比對的原始文本裡的Ben,再看一個例子:my, 它在原始文本裡面找到了兩個比對結果。
比對任意字元
.字元(英文句号)可以比對任意單字元,有些特殊的符号如換行符是無法比對的。
上述例子中,因為.能夠比對任意單個字元,是以excel.也比對該檔案。
.允許一次使用多個,它可以連續使用,也可以在任意位置出現。
比對特殊字元
我們使用/來對特殊字的轉義,表示後面所跟随的符号是正規表達式裡有有特殊含義的。
檢視以nx,ex開始的xml檔案名
比對多個字元中的某一個
請比對nx和ex開頭的xml檔案,我們可以使用元字元[和]來定義一個字元集合。在使用[和] 定義的字元集和裡,出現在[和] 之間的所有字元都是該集合的組成部分,必須比對其中某個成員(但并非全部)
這種字元集合一般用于不區分大小寫的搜尋如:
[Rr]eg[Ee]x
The phrase "regular expression" is often abbreviated as RegEx or regex.
利用字元集合區間
如果要比對na和sa開始的以數字結尾的xls檔案如下圖
如果要抛開sam.xls,需要用數字集合來解決,如下圖
[ns]a[0123456789]\.xls
na1.xls
na2.xls
sa1.xls
ca1.xls
sam.xls
連字元
上述例子中用到了集合[0123456789]表示比對數字,為了台灣字元區間的定義,正規表達式提供了一個特殊的元字元-(連字元)來定義字元區間,它隻出現在[和]之間的時候才是元字元,可以将上述的案例改寫成
[ns]a[0-9]\.xls
na1.xls
na2.xls
sa1.xls
ca1.xls
sam.xls
字元區間并不僅限于數字,一下這些都是合法的字元區間。
A-Z,比對從A到Z的所有大寫字母
a-z,比對從a到z的是以小寫字母
A-F,比對從A到F的所有大寫字母
A-z,比對ASCII字元A到ASCII字元z的所有字元
在同一個字元集裡可以出現多個字元區間。比如說[A-Za-z0-9]:比對所有大小寫字母和數字
排除
我們通常用元字元:^來排除某個字元集合,如下面例子,我們需要拿ns開始的,沒有數字的文章
[ns]a[^0-9]\.xls
注意:^的效果将作用于給定字元集合裡面的所有字元或字元區間,而不是僅限于緊跟在^字元後面的哪一個字元或字元區間。
轉義
var myArray = new Array();
...
if(myArray[0] == 0){
...
}
比對myArray[0]
比對空白字元
[\b] 回退(并删除)一個字元(Backspace鍵)
\f 換頁符
\n 換行符
\r 回車符
\t 制表符(Tab鍵)
\v 垂直制表符
"101","Ben","Forta"
"102","Jim","James"
"103","AAA","DDD"
"104","BBB","CCC"
比對特定的字元類型
比對數字
\d 任何一個數字字元(等價于[0-9])
\D 任何一個非數字字元(等價于[^0-9])
比對字母數字
\w 任何一個字母數字字元(大小寫均可)或下劃線字元(等價于[a-zA-Z0-9_])
\W 任何一個非字母數字或非下劃線字元(等價于[^a-zA-Z0-9_])
比對空白字元
\s 任何一個空白字元(等價于[\f\n\r\t\v])
\S 任何一個非空白字元(等價于[^\f\n\r\t\v])
比對十六進制
\x0A(對于ASCII字元10,也就是換行符)等價于\n
比對八進制
\011(對于ASCII字元9,也就是制表符)等價于\t
比對POSIX字元類(JS不支援)
[:alnum:] 任何一個字母或數字(等價于[a-zA-Z0-9])
[:alpha:] 任何一個字母(等價于[a-zA-Z])
[:blank:] 空格或制表符(等價于\t )
[:cntrl:] ASCII控制字元(ASKII 0到31,再加上ASCII127)
[:digit:] 任何一個數字(等價于[0-9])
[:graph:] 和[:print:]一樣,但不包括空格
[:lower:] 任何一個小寫字母(等價于[a-z])
[:print:] 任何一個可列印字元
[:punct:] 即不屬于[:alnum:] ,也不屬于[:cntrl:]的任何一個字元
[:space:] 任何一個空白字元,包括空格(等價于[\f\n\r\t\v ])
[:upper:] 任何一個大寫字母(等價于[A-Z])
[:xdigit:] 任何一個十六進制數字(等價于[a-fA-F0-9])
使用POSIX字元類,需要以[[開始,以]]結束(兩對方括号),如:[[:digit:] ]