JavaScript 正则表达式 (?i) 选项中不区分大小写的部分字符串不起作用

Part of String Case Insensitive in JavaScript Regex (?i) option not working

我正在使用 Nodejs 构建应用程序,我需要在其中处理某些字符串我为此目的使用了 JS "RegExp" 对象。 我只希望正则表达式中的一部分字符串不区分大小写

var key = '(?i)c(?-i)ustomParam';
var find = '\{(\b' + key +'\b:?.*?)\}';
var regex = new RegExp(find,"g");

但它因以下错误而中断

SyntaxError: Invalid regular expression: /{(\b(?i)c(?-i)ustomParam\b:?.*?)}/

我将从一些外部源(如 redis)获取密钥,并从其他一些外部源获取要匹配的字符串,我希望第一个字母不区分大小写,其余字母区分大小写。

当我从外部来源获取密钥时,我将在第一个字母表之前附加 (?i),在第一个字母表之后附加 (?-i)。

我什至只是为了入门而试过这个,但也没有用

var key ='customParam';
var find = '(?i)\{(\b' + key +'\b:?.*?)\}(?-i)';
var regex = new RegExp(find,"g");

我知道我可以使用 "i" 标志而不是上面的标志,但这不是我的用例。我这样做只是为了检查。

JavaScript内置RegExp不支持内联修饰符,像(?im)一样,更不用说可以放置的内联修饰符组了模式内的任意位置(例如(?i:....))。

即使是 XRegExp cannot offer this functionality,您也只能在整个模式上使用 (?i),在模式开头声明它。

在 XRegExp 中,您只能将正则表达式定义为

var regex = XRegExp('(?i)\{(\b' + key +'\b:?.*?)\}', 'g');

2020 年 5 月 27 日,JavaScript 本机 RegExp 和 XRegExp 模式仍然不支持内联修饰符组(即 (?i:...)),也不将它们放在模式的任何部分(至关注XRegExp)。