我正在尝试获取字符串中方括号之间的内容,但我的正则表达式不起作用。
正则表达式: /\[([^\n\]]+)\]/g
它在 regex101 上返回正确的匹配组,但是当我尝试类似的操作时'[a][b]'.match(/\[([^\n\]]+)\]/g),我得到的['[a]', '[b]']不是['a', 'b'].
如果我迭代并执行 RegExp.exec,我可以获得正确的结果,但是从在线查看示例来看,我似乎应该能够使用 String.match 获取匹配组
您正在使用 String.match()方法,.exec()在带有“g”标志的正则表达式的情况下,该方法与 RegExp 具有不同的行为。该.match()方法为您提供了整个搜索字符串中“g”正则表达式的所有完整匹配项。
如果您将代码更改为
/\[([^\n\]]+)\]/g.exec('[a][b]')
Run Code Online (Sandbox Code Playgroud)
你会得到你期望的结果:一个数组,其中第一个条目 (index 0) 是整个匹配项,第二个和后续条目是来自正则表达式的组。
您必须迭代以匹配所有这些:
var re = /\[([^\n\]]+)\]/g, search = "[a][b]", bracketed = [];
for (var m = null; m = re.exec(search); bracketed.push(m[1]));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2148 次 |
| 最近记录: |