Javascript正则表达式中的组详细解决方案

以前写过关于新手新手的介绍文章,这个思想比较了解正则表达式,但是今天我遇到了一个坑,你可能不够仔细,今天重点讲解了共享javascript正则表达式和大家。如果你不懂js正则表达式,可以点击这里了解更多。

这种分组在规则中被广泛使用。我所理解的组是一对圆括号(),每个圆括号代表一个组。



分组可分为:

捕获分组
非捕获分组
捕获分组




捕获组将在相应的函数中获得相应的分组的结果,如第二项和第三项。


var();
var str =新test001 test002;
console.log(str.match(REG));
/ / {test001



代码( +)是一个组(有些人称之为子模式),但它表达的意思是一样的。在上面的例子中,test001是一个完美的匹配。

匹配的群体,然而,就是找到字符匹配模式 D +从整个完整的匹配结果(即test001),这显然是1。

但今天的情况就是这样。


var = (测试);
var str =新test001 test002;
console.log(str.match(REG));
/ / {test001



不同的是( D +)代替( D)+,整个比赛的结果仍然是test001,但第一组比赛的结果是不同的。



让我们分析一下他们之间的差异。

(+ +)这是一个包的全部,因为默认的匹配模式是贪婪模式,尽可能地

所有+ +匹配的结果为001,在组外添加一对圆括号,第一组的结果为1。

让我们看一下第二个例子中的(+)+。类似地,这也是一种贪婪模式。首先,它将首先匹配0,然后0将匹配最后1,也匹配到比赛结束。



它与第一个示例中的匹配似乎没有什么不同,但是这里的代表一个数字,



根据我以前的理解,第一场比赛的结果是0,但是这种理解是错误的,因为整个比赛是贪婪的,尽可能的匹配。



数据包中的()将捕获最后匹配结果1。

如果它是非贪婪模型,它将尽可能少匹配。


var = (测试);
var str =新test001 test002;
console.log(str.match(REG));

/ / {test001




所以()匹配结果是0,虽然有一个匹配可以匹配结果,但这里是尽可能少匹配。

非捕获分组




var = (测试);
var str =新test001 test002;
console.log(str.match(REG));
/ / {test001



非捕获数据包,就是有些地方需要使用一对圆括号,但不想让他成为一个数据包捕获,就是不想让这组是由一个功能类似的比赛执行了。

通常在括号前面加上:即(::模式),因此它成为非捕获组。

这样,匹配结果中就不会有包匹配的内容,即1。少于第二项。

本文重点讨论了(+ +)和(+)+之间的区别,也是我今天踏上的一个坑。如果有错误,请改正。