ECMAScript5規範規定,同一段代碼所表示的正則表達式直接量的每次運算都返回新對象。(這裏須要注意)
在正則表達式中,許多標點符號具備特殊含義,它們是:正則表達式
^ $ . * + ? = ! : | \ / ( ) [ ] { }
若是想在正則表達式中使用這些字符的直接量進行匹配,則必須使用前綴,這是一條通行規則。數組
將直接量字符單獨放進方括號內就組成了字符類。一個字符類能夠匹配它所包含的任意字符。
正則表達式的重複字符語法函數
{n,m}匹配前一項至少n次,但不能超過m次 {n,}匹配前一項n次或者更屢次 {n}匹配前一項n次 ? 匹配前一項0次或者1次 ,等價於{0,1} + 匹配前一項1次或者屢次,等價於{1,} * 匹配前一項0次或者屢次,等價於{0,}
非貪婪匹配只須要在待匹配的字符後跟隨一個問號便可
正則表達式的模式匹配老是會尋找字符串中第一個可能匹配的位置。code
字符|用於分隔供選擇的字符。對象
(...)組合,將幾個項組合爲一個單元,並且能夠記住和整個組合相匹配的字符串以供此後的引用使用。 (?:...)只組合,把項組合到一個單元,但不記憶與該組相匹配的字符。 \n 和第n個分組第一次匹配的字符相匹配,組是圓括號中的子表達式,組索引是從左到右的左括號數。 ^ 匹配字符串的開始,在多行檢索中,匹配一行的開始 $ 匹配字符串的結尾,在多行檢索中,匹配一行的結尾 \b 單詞邊界 \B 非單詞邊界 (?=p) 零寬正向先行斷言,要求接下來的字符都與p匹配,但不能包括匹配p的那些字符 (?!p) 零寬負向先行斷言,用以指定接下來的字符都沒必要與p匹配。 i 說明模式匹配是不區分大小寫 g 說明模式匹配是全局 m 在多行模式中執行匹配
用於模式匹配的String方法
search(),它的參數是一個正則表達式,返回第一個與之匹配的子串的起始位置,若是找不到匹配的子串,它將返回-1。若是其參數不是正則表達式,則首先會經過RegExp構造函數將它轉換成正則表達式,search()方法不支持全局檢索,由於它忽略正則表達式參數中的修飾符g。索引
replace()方法用以執行檢索與替換操做。其中第一個參數是一個正則表達式,第二個參數是要進行替換的字符串(能夠是函數)。這個方法對調用它的字符串進行檢索。使用指定的模式來匹配。
若是在替換字符串中出現了$加數字,那麼replace()將用與指定的子表達式相匹配的文原本替換着這兩個字符。ip
match()方法是最經常使用的String正則表達式方法。它的惟一參數就是一個正則表達式(或經過RegExp()構造函數將其轉換爲正則表達式),返回的是一個由匹配結果組成的數組。爲了和方法replace()保持一致,a[n]存放的是$n的內容。字符串
('1 plus 2 equl 3').match(/\d+/) //["1", index: 0, input: "1 plus 2 equl 3", groups: undefined] ('1 plus 2 equl 3').match(/\d+/g) //["1", "2", "3"] ('1 plus 2 equl 3').match(/(\d+)/) //["1", "1", index: 0, input: "1 plus 2 equl 3", groups: undefined]
split()方法的參數也能夠是一個正則表達式。input
RegExp對象
RegExp()構造函數帶有兩個字符串參數,第一個參數包含正則表達式的主體部分,也就是正則表達式直接量中兩條斜線之間的文本,其中第二個參數是可選的。it
source是一個只讀字符串,包含正則表達式的文本。 global是一個只讀的布爾值,用以說明這個正則表達式是否帶有修飾符g。 ignoreCase是一個只讀的布爾值,用以說明正則表達式是否帶有修飾符i。 multiline是一個只讀的布爾值,用以說明正則表達式是否帶有修飾符m。 lastIndex是一個可讀/寫的整數。若是匹配模式帶有g修飾符,這個屬性存儲在整個字符串中下一次檢索的開始位置,這個屬性會被exec()和test()方法用到。
exec()方法對一個指定的字符串執行一個正則表達式,若是它沒有找到任何匹配,它就返回null,但若是它找到了一個匹配,它將返回一個數組。這個數組的第一個元素包含的是與正則表達式相匹配的字符串,餘下的元素是與圓括號內的子表達式相匹配的子串。屬性index包含了發生匹配的字符位置,屬性input引用的是正在檢索的字符串。
var str='1 plus 2 equl 3' /\d+/.exec(str) //["1", index: 0, input: "1 plus 2 equl 3", groups: undefined] /(\d+)/.exec(str) //["1", "1", index: 0, input: "1 plus 2 equl 3", groups: undefined] //ECMAScript5規範規定,同一段代碼所表示的正則表達式直接量的每次運算都返回新對象。(這裏須要注意) (/(\d+)/g).exec(str) //["1", "1", index: 0, input: "1 plus 2 equl 3", groups: undefined] (/(\d+)/g).exec(str) //["1", "1", index: 0, input: "1 plus 2 equl 3", groups: undefined] var reg=/(\d+)/g reg.exec(str) // ["1", "1", index: 0, input: "1 plus 2 equl 3", groups: undefined] reg.exec(str) // ["2", "2", index: 0, input: "1 plus 2 equl 3", groups: undefined]
test()方法的參數是一個字符串,若是包含正則表達式的一個匹配結果,則返回true。調用test()和exec()等價,當exec()的返回結果不是null時,test()返回true。