JS 正则表达式 API 中是否有一种方法可以重写输入,以便仅保留匹配的组(按顺序),但它适用于任意正则表达式(包括没有捕获组的正则表达式)?
例如对于正则表达式 /abc([D-F]+)gh([I-K]+)/
和输入 abcFEEDghKIKI
,我想要输出 "FEEDKIKI"
,因为这些是捕获的部分。
但是,输入正则表达式也可以是 /([a-zA-Z]+)/
,对于相同的输入,它只会返回原始文本。
如果正则表达式为 /([0-9]+)/
则将返回空字符串。
正则表达式将由工具生成,但正则表达式有很多,我不想要针对不同数量的捕获组的特殊情况代码。
理想情况下,我还能够以某种方式访问输入中匹配的长度。
我假设有某种方法可以通过传递给 replace()
(或类似)的回调来完成此操作,但不清楚如何/是否可以获取捕获组的索引(或在 JS 中是否有必要)。
本质上,我试图复制您可以通过 Java 中的 MatchResult
API 执行的操作,其中可以迭代组,并且可以找到捕获组的开始/结束索引。< /p>
提前致谢!
发现: 如何访问JavaScript 正则表达式? 看起来(至少最初)使用
exec()
会做我想要的事情。