|
|
1
1775
您可以这样访问捕获组:
如果有多个匹配项,您可以对其进行迭代:
正如您所见,迭代多个匹配项的方法不是很直观。这导致了
当它返回一个迭代器时,我们可以说它是懒惰的,这在处理大量捕获组或非常大的字符串时非常有用。但如果需要,可以使用
扩展语法
同时,虽然这个提议得到了更广泛的支持,但您可以使用 official shim package 此外,该方法的内部工作原理也很简单。使用生成器函数的等效实现如下所示:
标志以避免无限循环。 |
|
2
192
不
|
|
3
62
这个
|
|
4
34
最后但并非最不重要的一点是,我发现一行代码对我来说运行良好(JS ES6):
|
|
|
5
33
关于上面的多匹配圆括号示例,我在没有得到我想要的答案后在这里寻找答案:
在看了上面用while和.push()进行的稍微复杂的函数调用之后,我突然意识到用while和.push()可以非常优雅地解决这个问题mystring.replace()相反(替换不是重点,甚至还没有完成,第二个参数的干净的、内置的递归函数调用选项是!):
在这之后,我想我再也不会对任何东西使用.match()。 |
|
6
25
此方法产生与
查看JS演示(在googlechrome73.0.3683.67(官方版本)中测试,beta(64位)):
这个
您还可以使用
注意 browser compatibility 细节。 |
|
|
7
20
说明
才能进入
匹配的组
匹配的模式
,您需要一个函数或类似的东西来迭代
比赛
. 有很多方法可以做到这一点,正如许多其他答案所示。大多数其他答案都使用while循环来迭代所有的答案
匹配的模式
但我想我们都知道这种方法的潜在危险。有必要与
代码示例
下面是一个函数示例
简洁的版本(更少的代码,更多的语法糖)
因为它们基本上实现了
性能版本(更多的代码,更少的语法糖)
我还没有将这些替代方案与前面提到的其他答案进行比较,但我怀疑这种方法的性能和故障安全性不如其他方法。 |
|
|
8
17
你的语法可能不是最好的。FF/Gecko将RegExp定义为函数的扩展。
相反,请使用其他人之前提到的任何一种方法:
|
|
|
9
16
位置0有一个包含所有结果的字符串。位置1的第一个匹配用括号表示,位置2的第二个匹配用括号分隔。嵌套括号很棘手,所以要小心! |
|
|
10
8
只有一对圆括号才实用的一行:
|
|
11
8
|
|
|
12
7
使用您的代码:
|
|
13
6
|
|
|
14
3
|
|
|
15
2
|
|
16
2
您实际上不需要显式循环来解析多个匹配项,而是将替换函数作为第二个参数传递,如中所述:
这个
|
|
17
1
|
|
|
18
1
单线解决方案:
结果:
|
|
|
19
1
只需使用RegExp.$1…$n组 如: 1.匹配第一组RegExp.$1 如果在regex likey中使用3 group(注意在字符串。匹配(正则表达式) 正则表达式$1正则表达式$2正则表达式$3
|
|
20
0
|
|
|
21
0
你和我一样,希望regex能返回这样的对象:
然后从下面剪掉函数
|
|
22
0
正如@cms在ECMAScript(ECMA-262)中所说的,您可以使用
|