无效的正则表达式(无效的组)

时间:2019-07-12 07:50:06

标签: javascript

我遇到以下错误:

"message": "Invalid regular expression: /^(?<basename>[a-zA-Z0-9-]+)(\\?(?<testVersion>[a-zA-Z0-9-]+=[a-zA-Z0-9-]+))?(@(?<rawTimestamp>[^.]+))?\\.json/: Invalid group"

我的正则表达式怎么了?

const FILENAME_ACCEPTOR = /^(?<basename>[a-zA-Z0-9-]+)(\?(?<testVersion>[a-zA-Z0-9-]+=[a-zA-Z0-9-]+))?(@(?<rawTimestamp>[^.]+))?\.json/;

1 个答案:

答案 0 :(得分:0)

命名捕获组(于2018年引入)是一件很新的事情。您运行的引擎不得支持它们。如果需要,请使用普通的数字捕获组,然后将其提取到对象中。

const FILENAME_ACCEPTOR = /^([a-zA-Z0-9-]+)(\?([a-zA-Z0-9-]+=[a-zA-Z0-9-]+))?(@([^.]+))?\.json/;

在这里,第一个捕获组([1])对应于basename,第三个[3]对应于testVersion,第四个{{1} }将对应于[4]。 (您的原始正则表达式已经有一个捕获组,该捕获组位于第一个命名组和第三个命名组之间-如果您实际上并未使用它,则可能最好将其删除)