【发布时间】:2022-01-22 23:46:13
【问题描述】:
是否可以测试 javascript regex 是否包含捕获组而不执行它,使用 js regex api 而不是自己编写检查?
这样的功能应该给出这些结果:
'US-.*' // false
'US-(.*)' // true
'US-(?:east|west)' // false, parentheses define non-capturing group
'US-\(.*\)' // false, escaped parentheses
// etc.
我可以写一个可以判断的正则表达式,但在某些极端情况下可能会关闭,所以询问JS引擎本身会更可靠。
我的用例:我有一个组件,它使用用户定义的正则表达式来过滤一组输入字符串,并从匹配该正则表达式的字符串中创建一个组。如果正则表达式包含捕获组,则第一个用作组名。否则,用户必须在另一个表单字段中明确定义组名(当正则表达式包含捕获组时禁用)。因此,在编写正则表达式时,我什至没有数据集来执行正则表达式并检查是否有匹配的子字符串。
【问题讨论】:
-
What topics can I ask about here?: “我需要一个能够提供...的函数”不是其中之一。
-
没有相应的 API。考虑到捕获组可能出现在正则表达式中,因此它可能不参与匹配,因为它可能在表达式的条件部分中。
-
@Andreas 我问是否可以使用 JS 引擎/API,而不是为我编写函数。下次请仔细阅读问题,谢谢。 “我需要一个函数”的意思是“这描述了我最能解决的问题”,而不是“为我写”。
-
@Pointy 感谢您的回答 - 是的,捕获组可以是可选的,但我可以想象 API 仍然可以给我一些线索,例如如果 JS 有一个用于其正则表达式 AST 解析器的 API。
-
"Is it possible to..." 要求回答是或否。这对 SO 有什么用?结合 “我需要...” 使这成为一个 “我没有做过任何研究。请为我做这件事并添加一个可行的解决方案”
标签: javascript regex