#學習JS——Regexp類型正則表達式
##1. 基本語法 正則表達式字面量:var expression = / pattern / flags
express
pattern:任何簡單或複雜的正則表達式數組
flags:一個或多個標誌以標明正則表達式的行爲函數
eg:學習
var pattern1 = /at/g; /*匹配字符串中全部'at'實例*/ var pattern2 = /[bc]at/g; /*全部'bat','cat'實例*/ var pattern3 = /.at/g; /*匹配全部以'at'結尾的實例*/
RegExp構造函數code
`var pattern2 = new RegExp("[bc]at", "i");字符串
RegExp函數接受兩個字符串參數,第一個表示Pattern,第二個表示flags,在某些狀況,要對字符串雙重轉義。input
##2. 實例屬性io
eg:ast
var pattern = /\[bc\]at/i; alert(pattern.globle); //false alert(pattern.ignoreCase); //true alert(pattern.multiline); //false alert(pattern.lastIndex); //0 alert(pattern.sourse); // "/\[bc\]at/i"
##3. 實例方法 exec()方法
exce()接受要應用模式的字符串,而後返回包含第一個匹配項的信息的數組;或者在沒有匹配項的狀況下返回null。其中,返回的數組具備兩個屬性
在數組中。第一項是與整個模式匹配的字符串,其餘項是與模式中的捕獲組匹配的字符串(沒有捕獲組,數組只包含一項)
var text = "mom and dad and baby"; var pattern = /mom( and dad( and baby)?)?/gi var matches = parttern.exce(text); alert(matches.input); //"mom and dad and baby" alert(matches.index); //0 alert(matches.[0]); //"mom and dad and baby" alert(matches)[1]); //" and dad and baby" alert(matches)[2]); //" and baby"
對於exec()方法,即便設置了全局標誌,每次只會返回一個匹配項。 不設置全局標誌時。在一個字符串上屢次調用exec()會始終返回第一個匹配項的信息,設置全局標誌時,每次調用exec()則都會在字符串中繼續查找新的匹配項。
var text = "cat bat hat"; var pattern1 = /.at/i; var matches = pattern1.exec(text); alert(matches.index); //0; alert(matches[0]); //"cat"; alert(pattern1.lastIndex); //0; var matches = pattern1.exec(text); alert(matches.index); //0; alert(matches[0]); //"cat"; alert(pattern1.lastIndex); //0; var pattern2 = /.at/gi; var matches = pattern1.exec(text); alert(matches.index); //0; alert(matches[0]); //"cat"; alert(pattern1.lastIndex); //3; var matches = pattern1.exec(text); alert(matches.index); //4; alert(matches[0]); //"bat"; alert(pattern1.lastIndex); //7;
全局模式下,每次調用exec()都會返回字符串中的下一個匹配項,直到搜索到末尾
test()方法
接受一個字符串參數,在模式與該參數匹配時返回true,不然false
var text = "000-00-0000" var pattern = /\d{3}-\d{2}-\d{4}/; if(pattern.test(text){ alert("the partern was matched"); }
經常使用來驗證用戶輸入