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/;
解决方案
命名捕获组(于 2018 年推出)是一个相当新的事物。您运行的引擎不得支持它们。改用普通的数字捕获组,然后将它们提取到对象中,如果这是您需要的:
const FILENAME_ACCEPTOR = /^([a-zA-Z0-9-]+)(\?([a-zA-Z0-9-]+=[a-zA-Z0-9-]+))?(@([^.]+))?\.json/;
这里,第一个捕获组 ( [1]
) 将对应于basename
,第三个[3]
将对应于testVersion
,第四个[4]
将对应于rawTimestamp
。(您的原始正则表达式已经有一个捕获组,位于第一个和第三个命名组之间 - 如果您实际上没有使用它,最好将其删除)
推荐阅读
- html - 从网页中的输入标签中提取元素信息
- r - 是否有用于反转数字向量内容符号的 R 函数?
- unit-testing - Microsoft.Extensions.Logging.Abstractions 更新后 Moq 和 Microsoft.Extensions.Logging.ILogger 单元测试失败
- reactjs - React 防止子组件重新渲染
- python - 嵌套列表理解与嵌套 for 循环不同
- sql-server - Making XMLA/DAX requests to ISS/SSAS
- python - 从相机保存视频得到语法错误
- amazon-web-services - Amazon Linux (RedHat/CentOS) EC2 上的 openpyxl "BadZipFile"
- java - Java 应用程序中更多的线程是否会增加 CPU% 的使用率并降低应用程序的速度?
- vb6 - vb6 ActiveReports1:如何构建具有 3 个具有不同数据源的子报表的报表