(一)字符類
[...] 方括號內的任意字符
[^...]? 不在方括號內的任意字符
.? ? ?除換行符和其它Unicode行終止符之外的任意字符
\w ?任何ASCII字符組成的單詞,等價于[a-zA-Z0-9]
\W 任何非ASCII字符組成的單詞,等價于[^a-zA-Z0-9]
\s ? 任何Unicode空白符
\S ? 任何非Unicode空白符
\d ? 任何數字,等價于[0-9]
\D ? 任何非數字,等價于[^0-9]
?
(二)重復字符語法
{n,m} 匹配前一項至少n次,但不能超過m次
{n,} ? ?匹配前一項n次或更多次
{n} ? ? 匹配前一項n次
? ? 匹配前一項0次或1次,等價{0,1}
+ 匹配前一項1次或多次,等價于{1,}
* ?匹配前一項0次或多次,等價于{0,}
默認貪婪匹配:/a{1,3}/ ? ?匹配'aaa'
非貪婪匹配,只需要在重復字符后面加上? ?/a{1,3}?/ ? ?匹配'a'
?
(三)選擇,分組,引用
|? ? ?選擇,匹配該符號左邊的子表達式或右邊的子表達式: /\d{3}|[a-z]{4}/ ?匹配三位數字或者四個小寫字母
() ?分組
1. 可以把單獨的項組合成子表達式,以便可以像處理一個單獨的單元那樣用 | * + ?等對單元內的項進行處理: /java(script)?/
2. 分組之后可以引用 \n表示引用第n個分組表達式匹配內容: /(['"])[^'"]*\1/
?
(四)指定匹配位置
^ 匹配字符串開頭
$ 匹配字符串結尾
\b ?匹配單詞邊界
?
(五)修飾符
i 不區分大小寫
g 全局匹配,即找到所有匹配,而不是找到第一個之后就停止
?
(六)String正則匹配方法
search: 參數是正則,返回一個與之匹配的字串的起始位置,匹配不到返回-1
'javascript'.search(/script/i) ? 返回4 ?
replace: 第一個參數是正則,第二個是要替換的字符串、$開頭的特殊字符串、函數
'javascript'.replace(/script/gi,'Script') ?返回javaScript
第二個參數可以是$n,代表第n個組合所匹配的字符串
'javascript'.replace(/(sc)ript/gi,"$1")?返回javasc
第二個參數可以是函數
'a=1&b=2'.replace(/(\w+)=(\w+)&?/g,function($1,$2,$3){console.log($1,$2,$3) }) a=1& a 1 b=2 b 2
?
match:參數是正則,返回一個由匹配結果組成的數組
帶g:'1 ldf 3 dsfdf 4f'.match(/\d+/g) ?返回['1','3','4']
不帶g:
'1 ldf 3 dsfdf 4f'.match(/\d+/) ?返回["1", index: 0, input: "1 ldf 3 dsfdf 4f"]
'abcd'.match(/(ab)c/)? 返回["abc", "ab", index: 0, input: "abcd"] ? 還會把組合匹配到的字符放到數組中
?
(七)正則方法
test:參數為字符串,判斷是否匹配成功
/java/.test('javascript') ?返回true
exec:如果 exec() 找到了匹配的文本,則返回一個結果數組。否則,返回 null。此數組的第 0 個元素是與正則表達式相匹配的文本,第 1 個元素是與 RegExpObject 的第 1 個子表達式相匹配的文本(如果有的話),第 2 個元素是與 RegExpObject 的第 2 個子表達式相匹配的文本(如果有的話),以此類推。除了數組元素和 length 屬性之外,exec() 方法還返回兩個屬性。index 屬性聲明的是匹配文本的第一個字符的位置。input 屬性則存放的是被檢索的字符串 string。我們可以看得出,在調用非全局的 RegExp 對象的 exec() 方法時,返回的數組與調用方法 String.match() 返回的數組是相同的。
/java/.exec('javascript') ?返回["java", index: 0, input: "javascript"]
但是,當 RegExpObject 是一個全局正則表達式時,exec() 的行為就稍微復雜一些。它會在 RegExpObject 的 lastIndex 屬性指定的字符處開始檢索字符串 string。當 exec() 找到了與表達式相匹配的文本時,在匹配后,它將把 RegExpObject 的 lastIndex 屬性設置為匹配文本的最后一個字符的下一個位置。這就是說,您可以通過反復調用 exec() 方法來遍歷字符串中的所有匹配文本。當 exec() 再也找不到匹配的文本時,它將返回 null,并把 lastIndex 屬性重置為 0。
var p = /java/g var str = 'javajavajaddd' p.exec(str) ["java", index: 0, input: "javajavajaddd"] p.exec(str) ["java", index: 4, input: "javajavajaddd"]
?