我的代码收到一个RegExp对象(不受控制)。它不是全球性的,但我需要它。
目前我正在这样做:
if (!regex.global) {
var flags = 'g';
if (regex.ignoreCase) flags += 'i';
if (regex.multiline ) flags += 'm';
if (regex.sticky ) flags += 'y';
regex = new RegExp(regex.source, flags);
}
...因为我无法想出任何其他方式。
regex.global
没有二传手。 regex.compile(new_pattern)
已弃用,以支持new RegExp(new_pattern)
regex.flags
不是一件事有更好的方法吗?
答案 0 :(得分:2)
我害怕答案是"不"。
无法更改现有正则表达式上的标志。你正在做的事情似乎是最干净的方式。
你(可以说)可以稍微缩短可选标志:
var flags = 'g' +
(regex.ignoreCase ? 'i' : '') +
(regex.multiline ? 'm' : '') +
(regex.sticky ? 'y' : '');