正则表达式匹配所有组名未显示

时间:2019-09-10 03:01:45

标签: javascript regex

我想使用javascript regexp解析带注释的我的bind9区域文件,我在https://regex101.com/r/qnoZbK/1上对其进行了测试,但是我无法在Chrome开发工具中获取组名。

测试代码为

const contents = `; the is some comment
name1           IN  CNAME   value1
name2           IN  A   value2
;name3          IN  A   value3
; the is another comment
name4           IN  A   value4`

const regexp = /(?:^;\s*(?<comment>.+?)\s*$\n)?^\s*(?!;)(?<name>.*?)\s+(?<className>.*?)\s+(?<type>.*?)\s+(?<value>.*?)$/gm

const matches = contents.matchAll(regexp)
for (const match of matches) {
  console.info(match)
}

以下是我的Chrome浏览器的快照

enter image description here

2 个答案:

答案 0 :(得分:0)

最后,我发现了问题所在,这是因为我在项目中使用了babel,项目中的regexp是通过babel插件(https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-named-capturing-groups-regex)包装的,并且其版本过旧并且可能包含此内容一种错误。

我可以通过yarn upgradencu -u && yarn更新依赖关系来解决此问题。希望其他有相同问题的人可以从这篇文章中获得帮助。

答案 1 :(得分:0)

我也发现了一个问题,同一个正则表达式有时可能会丢失组信息。

坏人。

enter image description here

好人。

enter image description here