登录
原创

正则表达式

发布于 2021-04-08 阅读 386
  • JavaScript
原创

捕获性分组

捕获性分组—返回匹配的字符串、所有子串
例如:

var pattern = /([a-z]+)([0-9]+)/;
var str = 'happy123';
var res = pattern.exec(str);
alert(res);

执行结果:
正则表达式捕获性分组.png

[a-z]+匹配的是字符串‘happy’
[0-9]+匹配的是字符串‘123’
使用()括起来,表示这是一个子串
使用exec()返回的是一个数组,数组第一个元素为匹配的整个字符串,后面依次为匹配的子串

例如以上例子执行如下语句:

alert(res[0]);
alert(res[1]);
alert(res[2]);

结果依次为:
正则捕获性分组1.png
正则捕获性分组2.png
正则捕获性分组3.png

非捕获性分组

非捕获性分组—返回匹配的字符串、非所有子串
非捕获性分组需在正则匹配子串部分加上—问号+冒号 ?:
这样加上 ?: 的子串就不会出现在输出的数组中
例如:

var pattern = /([a-z]+)(?:[0-9]+)/;
var str = 'happy123';
var res = pattern.exec(str);
alert(res);

执行结果:
正则分非捕获性分组.png

在匹配数字字符串‘123’的正则子串([0-9]+)前加入了‘?:’—变成‘(?:[0-9]+)’,表示该子串不需要捕获,返回的数组不包含该子串,其他子串如果也不需要捕获,像此例一样在子串的‘()’中最前面的部分加上‘?:’即可

前瞻性捕获

子串加—问号+等号 ?=
匹配成功后,返回添加了 ?= 的子串前的字符串
例如:

var pattern = /color(?=ful)/;
var str = 'colorful';
var res  =pattern.exec(str);
alert(res);

数组返回结果:

前瞻性匹配.png

该例中,color后面只有跟的是‘ful’,才会返回color,如果不是,则不返回color,如下:

var pattern = /color(?=ful)/;
var str = 'colorless';
var res  =pattern.exec(str);
alert(res);

返回结果:
前瞻性匹配2.png

评论区

零00
7粉丝

时光荏苒,我自清欢

0

0

0

举报