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)。
我正在使用 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)。