js正則表達式學習筆記

正則表達式建立
字面量建立,a = /abc/gim;
構造函數建立,a = new RegExp('abc','gim')
正則表達式中的特殊字符,
[...] 方括號中的任意字符
[^...] 非方括號中的任意字符
s 空白字符
S 非空白字符
d 數字
D 非數字
w 字母和數字,至關於[a-zA-Z0-9]
W 非字母和數字
重複
{m,n} 介於m到n次之間
{m} 剛好等於m次
{m,} 大於等於m次
? 0次或者1次
* 0次或者n次
+ 1次或者n次
貪婪的匹配
重複的一種,貪婪的匹配即普通的書寫方式,儘量多的匹配;非貪婪的匹配就是儘量少的匹配,在重複的表示符號後面加上?,例如/a?/,字符串爲aaaa,將會匹配第一個a。須要注意的是,/a?b/來匹配aaaab獲得的匹配結果是aaaab,而不是ab。
選擇
選擇經過‘|’來實現,用於分隔供選擇的字符。匹配的次序是從左到右,若是左邊已經匹配了,就不考慮右邊的匹配項了。固然,而後是全局匹配的話能夠找出全部的匹配項。
分組
小括號功能較多有三種功能,
1.做用一,把單獨的項組合成子表達式。將一段字符串組成子表達式,例如/java(script)?/就能夠用來匹配Java以及JavaScript。
2.做用二,定義子模式,在調用exec方法的時候,返回值的數組第二項開始就是子模式的匹配結果了。
3.做用三,容許後面引用前面的表達式。例如,1引用的是第一個圓括號對應的表達式,2引用的是第二個圓括號對應的表達式。例如要匹配字符串中的子字符串,子字符串的引號應該相同,同爲單引號或者同爲雙引號。在不借助引用的狀況下只能這麼寫,/["']S["']/。這樣作不到同爲單引號或者雙引號,能夠改成/["']11/java

指明位置
^x 以x爲開始
x$ 以x結束
/bjava/ 匹配Java
/Bjava/ 匹配ajava,不匹配Java,由於B表示單詞不在這裏斷
(?=p) 零寬正向斷言,後面必須有p,可是不匹配p;這裏說的不匹配p意思是經過match函數的返回數組中不包含p,即這裏的p只是做爲一個條件。例如 /java(?=:)/,它不匹配JavaScript,匹配JavaScript:。
(?!p) 零寬負向斷言,後面必須沒有p,同時不匹配p。例如/java(?!:)/,它匹配JavaScript,它不匹配JavaScript:。
修飾符
i 忽略大小寫
g 全局屢次匹配
m 多行匹配
寫法實例:/[abc]/gim能夠匹配a、b、c、A、B、C。若是字符串有多個,全部的匹配項均可以匹配出來。
/abc$/g,這個表達式至多能匹配出一個匹配項
/abc$/gm,這個表達式能夠匹配出多個匹配項,將每次換行都看做是一次結束正則表達式

正則表達式的方法
這裏說的方法,即包括字符串和正則表達式相關的方法,也包括正則表達式自身的方法
字符串的四個方法,
String.search() 查找第一個匹配項的索引
Sring.replace() 第一個參數是正則表達式,若是正則表達式是全局那麼將替換掉全部的匹配項
String.match() 獲得全部的放回項數組。若是這時的正則表達式是一個非全局的,那麼和正則表達式exec()方法拿到的結果相同。
String.split(),也能夠接受一個正則表達式做爲參數。數組

regexp有兩個方法,分別是exec和test。exec的返回值是一個數組,test的方式值時一個布爾類型。函數


  1. '"
相關文章
相關標籤/搜索