JS RegExp实例 exec方法

JS RegExp实例 exec()方法

描述:

exec()方法在目标字符串中查找匹配的子字符串,若存在匹配,则返回一个数组,否则返回null

/\d+/.exec('JS123'); // ['123']
/\D+/.exec('JS123'); // ['JS']
/ecmaer/.exec('JS123'); // null 

语法:

RegExp.prototype.exec(strObj)

参数:

参数描述
strObj待匹配的字符串。

返回值:

exec()方法返回包含匹配到子字符串的数组或null。

返回数组的成员构成

如果匹配成功,数组的第一个成员是正则表达式匹配到的字符串,第2到n个成员是子表达式(如果存在的话)匹配到的字符串。

返回数组包含了其他匹配相关信息

这些信息存储在数组对象的属性中:

  • index属性:第一次匹配到的字符(串)在原始字符串中的位置索引值。
  • input属性:原始字符串。

例1: 子表达式的匹配

let arr = /\D+(\d+)/.exec('000aa111bb222cc333');

console.info(arr); // ["aa111", "111"]
console.info(arr.index); // 3 (表示匹配的字符串的位置索引值)
console.info(arr.input); // "000aa111bb222cc333" (表示原始字符串)

上面的例子中:返回的数组的第一个成员是表达式的第一个匹配,第二个成员是子表达式((\d+))匹配的字符(串)。

例2:exec()在全局匹配模式中的用法

// 声明一个全局匹配的正则表达式
let reg = /\d+/g, str = '123aaa456bbb789ccc';

console.info(reg.lastIndex); // 0

reg.exec(str); // ['123']
console.info(reg.lastIndex); // 3

reg.exec(str); // ['456']
console.info(reg.lastIndex); // 9

reg.exec(str); // ['789']
console.info(reg.lastIndex); // 15

reg.exec(str); // null
console.info(reg.lastIndex); // 0

reg.exec(str); // ['123']
console.info(reg.lastIndex); // 3

上面的例子展示了全局正则表达式的几个特点:

  1. exec()方法每次执行仅匹配一次就返回结果
  2. 正则对象的lastIndex表示匹配的起始位置,初始值为0
  3. 每一次匹配成功后,lastIndex值变成匹配子字符串后一位的位置索引值,即每次匹配成功,下一次匹配将从之前匹配成功子字符串后一个位置开始。
  4. exec()匹配失败后,正则对象的lastIndex重新归位为0

相关链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值