小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
1、RegExp.prototype.exec(string);
- 使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性以反映匹配结果。
- 如果没有匹配文本则返回
null
,否则返回一个结果数组:
在返回的结果数组中:
index
为声明匹配文本的第一个字符的位置
input
为存放被检索的字符串string
- 语法:正则表达式.exec(s字符串)
- 返回值:数组
例:
var str = '1a2b3c4d5e'; //准备一个字符串
var reg = /\d(\w)\d/; //正则:匹配以数字开头,中间是字母,以数字结尾
var ret = reg.exec(str); //接收exec的方法返回的结果
console.log(ret);
打印结果如下:
(2) ["1a2", "a", index: 0, input: "1a2b3c4d5e", groups: undefined]
0: "1a2"
1: "a"
groups: undefined
index: 0
input: "1a2b3c4d5e"
length: 2
__proto__: Array(0)
2、非全局调用
- 调用非全局的RegExp对象的exec()时,返回数组
- 数组第一个元素是于与正则表达式相匹配的文本
- 数组的第二个元素是与RegExp对象的第一个子表达式(即分组小括号里面的)相匹配的文本
- 数组的第三个元素是与RegExp对象的第二个子表达式相匹配的文本(如果有的话),以此类推
例:
var str = '1ab2zzzzz';
var reg = /\d(\w)(\w)\d/; //注意:每个(\w)代表一个子表达式
var ret = reg.exec(str);
console.log(ret[0]); //1ab2
console.log(ret[1]); //a
console.log(ret[2]); //b
代码不止,学习不停。