正则表达式中test、exec、match

2020-07-23  本文已影响0人  zhulichao
**test**查找对应的字符串中是否存在模式,返回Boolean。当一个具有g标志的正则表达式调用test方法时,它的行为和exec相同,会从上个匹配的位置(index + 当前匹配项的长度)开始查找,这样我们就可以使用方法test来遍历字符串了。

```
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
console.log(reg.test(str)); // true
console.log(reg.test(str)); // true
console.log(reg.test(str)); // true
console.log(reg.test(str)); // false
```

**exec**查找并返回当前的匹配结果,并以数组的形式返回,如果不存在模式则返回null,否则总是返回一个长度为1的数组,其值就是当前匹配项,还有两个属性:index为当前匹配项的位置;input就是参数字符串。exec方法受参数g的影响。若指定了g,则下次调用exec时,会从上个匹配的位置(index+当前匹配项的长度)开始查找。

```
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
console.log(reg.exec(str)); // ["1a", index: 0, input: "1a1b1c"]
console.log(reg.exec(str)); // ["1b", index: 2, input: "1a1b1c"]
```

**match**是String对象的一个方法。match这个方法有点像exec,但exec是RegExp对象的方法。二者有一个不同点,就是对参数g的解释。如果指定了参数g,那么match一次返回所有的结果组成的数组,没有匹配则返回null。

```
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
console.log(str.match(reg)); // ["1a", "1b", "1c"]
```
上一篇下一篇

猜你喜欢

热点阅读