无效的正则表达式:node.js中的组无效

时间:2018-04-16 19:28:22

标签: javascript regex

我正在尝试将ELB负载均衡器日志映射为具有nginx等通用格式并具有此正则表达式

const splitElbEntry = (elbLogEntry) => R.match(/(?P<date>[0-9-]+T[0-9:]+)\.\S+/)

我收到此错误:

SyntaxError: Invalid regular expression: /(?P<date>[0-9-]+T[0-9:]+)\.\S+/: Invalid group

https://regexr.com/3o06l上,它正在查找时间戳,但如果我添加一个新组,则正则表达式失败。

https://regex101.com/r/JOlrxS/5

的正确javascript等价物是什么

非常感谢任何建议

2 个答案:

答案 0 :(得分:1)

regexr中的选定风味是PCRE,你的最终风味是JS。 JS不支持(?P<name>...)表示法。但是,(?<name>...)将在ECMAScript 2018中实施(目前由Google Chrome支持)。

截至目前,您无法使用在所有主流浏览器中运行的命名捕获组。处理简单编号的捕获组。

答案 1 :(得分:0)

我使用编号的捕获组获得了所需的结果,感谢您的帮助。

https://regex101.com/r/JOlrxS/6

([0-9-]+T[0-9:]+)\.\S+\s+\S+\s+(\S+):\d+\s+\S+:\d+\s+\S+\s+(\S+)\s+\S+\s+(\S+)\s+\S+\s+\S+\s+(\S+)\s+\"\S+\s+\w+:\/\/([\w\-\.]*):\d+(\/\S*)\s+[^\"]+\"\s+\"([^\"]+)\"\s+\S+\s+\S+