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。少于第二项。
本文重点讨论了(+ +)和(+)+之间的区别,也是我今天踏上的一个坑。如果有错误,请改正。