JavaScript正则常用方法

正则常用的一些方法

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"]

猜你喜欢

转载自blog.csdn.net/alisa_lisa/article/details/87868280