正則常用的一些方法
1. test()
regexp.test(str)
作用: 檢測一個字符串是否匹配某個正則。滿足返回true,否則返回false
var regexp = /^1[3-9]\d{9}$/; // 手機號正則
console.log( regexp.test('13588888888') ); // true
console.log( regexp.test('12588888888') ); // false 第2位不滿足
正則方法test會受到正則對象全局
g
的影響 ,會導致正則對象lastIndex屬性值,lastIndex是下次開始往後匹配的起始位置,未加全局g,則lastIndex屬性值一直從0開始往後匹配。
var regexp = /^1[3-9]\d{9}$/g;
console.log( regexp.test('13588888888') ); // true
console.log(regexp.lastIndex); // 11
//regexp.lastIndex = 0; 重置下次開始匹配的位置爲0,下面的test結果就會爲true
console.log( regexp.test('13588888888') ); // false
console.log(regexp.lastIndex); // 0
console.log( regexp.test('13588888888') ); // true
console.log(regexp.lastIndex); // 11
一般對於結果滿足或不滿足的,正則對象不要加全局g即可。
2. exec()
regexp.exec(str)
作用: 返回正則匹配的結果,以一個數組返回 。此數組第一個元素(下標0)是正則相匹配的字符串,後面的元素依次是括號中捕獲組的內容。未匹配到則返回null
此和方法和test一樣,都會受到正則全局標識g
的影響。
加g測試:
var regexp = /(\d{3})\d{4}(\d{4})/; //未加g
regexp.exec('13588888888') ; // ["13588888888", "135", "8888", index: 0, input: "13588888888"]
regexp.lastIndex; // 0
regexp.exec('13588888888') ; // ["13588888888", "135", "8888", index: 0, input: "13588888888"]
regexp.lastIndex; // 0
regexp.exec('13588888888') ; // ["13588888888", "135", "8888", index: 0, input: "13588888888"]
加g測試:
var regexp = /(\d{3})\d{4}(\d{4})/g; //`加g
regexp.exec('13588888888'); // ["13588888888", "135", "8888", index: 0, input: "13588888888"]
regexp.lastIndex; // 11
regexp.exec('13588888888'); // null
regexp.lastIndex; // 0
regexp.exec('13588888888'); // ["13588888888", "135", "8888", index: 0, input: "13588888888"]