正则表达式exec()用法+实例

215 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

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

代码不止,学习不停。