1:正則的概念
正則表達式(regular expression)是一個描述字符規則的對象。可以用來檢查一個字符串是否含有某個子字符串,將匹配的子字符串做替換或者從某個字符串中取出符合某個條件的子串等。
爲什麼要用正則:
前端往往有大量的表單數據校驗工作,採用正則表達式會使得數據校驗的工作量大大減輕。常用效果:郵箱、手機號、身份證號等。
2:創建方式
第一種方式:
var reg = new RegExp(“study”,“ig”); // 第二個參數爲修飾符
i:表示忽略大小寫ignore。
g:表示全局匹配,查找所有匹配而非在找到第一個匹配後停止 global。
第二種方式:
var reg = /study/ig;
3:正則對象方法
test: 正則實例對象的test方法返回一個布爾值,表示當前模式是否能匹配參數字符串
/cat/.test('cats and dogs') // true
上面代碼驗證參數字符串之中是否包含cat,結果返回true。
如果正則表達式帶有g修飾符,則每一次test方法都從上一次結束的位置開始向後匹配
var r = /x/g;
var s = '_x_x';
r.lastIndex // 0
r.test(s) // true
r.lastIndex // 2
r.test(s) // true
r.lastIndex // 4
r.test(s) // false
上面代碼的正則表達式使用了g修飾符,表示是全局搜索,會有多個結果。接着,三次使用test方法,每一次開始搜索的位置都是上一次匹配的後一個位置。
帶有g修飾符時,可以通過正則對象的lastIndex屬性指定開始搜索的位置
var r = /x/g;
var s = '_x_x';
r.lastIndex = 4;
r.test(s) // false
上面代碼指定從字符串的第五個位置開始搜索,這個位置是沒有字符的,所以返回false。
exec:用於檢索字符串中的正則表達式的匹配。返回一個數組,其中存放匹配的結果。如果未找到匹配,則返回值爲null。
var s = '_x_x';
var r1 = /x/;
var r2 = /y/;
r1.exec(s) // ["x"]
r2.exec(s) // null
上面代碼中,正則對象r1匹配成功,返回一個數組,成員是匹配結果;正則對象r2匹配失敗,返回null。
4:字符串函數
replace: 按照給定的正則表達式進行替換,返回替換後的字符串。
字符串對象的replace方法可以替換匹配的值。它接受兩個參數,第一個是正則表達式,表示搜索模式,第二個是替換的內容。
str.replace(search, replacement)
正則表達式如果不加g修飾符,就替換第一個匹配成功的值,否則替換所有匹配成功的值。
'aaa'.replace('a', 'b') // "baa"
'aaa'.replace(/a/, 'b') // "baa"
'aaa'.replace(/a/g, 'b') // "bbb"
//上面代碼中,最後一個正則表達式使用了g修飾符,導致所有的b都被替換掉了。
match: 字符串實例對象的match方法對字符串進行正則匹配,返回匹配結果。
var s = '_x_x';
var r1 = /x/;
var r2 = /y/;
s.match(r1) //["x"]
s.match(r2) // null
//從上面代碼可以看到,字符串的match方法與正則對象的exec方法非常類似:匹配成功返回一個數組,匹配失敗返回null。
如果正則表達式帶有g修飾符,則該方法與正則對象的exec方法行爲不同,會一次性返回所有匹配成功的結果
var s = 'abba';
var r = /a/g;
s.match(r) // ["a", "a"]
r.exec(s) // ["a"]
search:檢索與正則表達式相匹配的值。返回字符串中第一個與正則表達式相匹配的子串的起始位置。如果沒有找到則返回-1。
'_x_x'.search(/x/)// 1
//上面代碼中,第一個匹配結果出現在字符串的1號位置。
5:正則表達式構成
字面量字符
元字符—限定符
元字符—字符匹配符
元字符—定位符
元字符—轉義符
元字符—選擇匹配符