有没有办法判断(JS)正则表达式是否包含组?

问题描述 投票:0回答:1

我有一个函数需要一个带有组的正则表达式,并使用它来分割另一个参数(一个字符串)。如果它得到一个没有组的正则表达式,该函数将起作用,但会做错误的事情,因为

split
根据正则表达式是否匹配组而工作不同。

但是,该字符串中的内容可以是任何内容(这是一个通用实用函数),这意味着如果有人使用带有非分组正则表达式的函数,一切都会“似乎”工作......但输出将是错误的(并且该函数无法知道输出是错误的:它必须信任提供的正则表达式)。 因此,我正在寻找一种方法来防止任何人意外地通过无组正则表达式使用此函数。我的问题是...

如果我有:

const myRegex = /abc/;

或者也许:

const myRegex = /a(bc)/;

有没有办法检查
myRegex

里面是否包含一个组?

我可以将正则表达式转换为字符串并检查它是否有括号,但正则表达式也可以包含诸如 

\(

这样的内容,它不是一个组。另外,转换为字符串感觉像是一个糟糕/肮脏的解决方案。

历史注释:

这个问题最初是在If I have a Regular Expression in JavaScript, is有什么方法可以判断它是否包含组吗?中提出的,但尽管是一个有效的问题,但它已被关闭,所以我重新-在这里问。 附注一个权威的答案“不,这在 JS 中是不可能的”将是一个完全可以接受的答案,但它需要引用一些权威(而不仅仅是“我不这么认为”)。

javascript regex
1个回答
0
投票
有什么方法可以检查 myRegex 内部是否包含组?

您将需要一个用户态解析器,因为

RegExp.prototype

(或
RegExp)中没有任何内容可以为您提供开箱即用的信息。
    

© www.soinside.com 2019 - 2024. All rights reserved.