我的代码收到一个 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
不是东西
有更好的方法吗?
最佳答案
您现在可以在 ES6 中执行此操作。我所说的“这个”并不是指修改现有正则表达式上的标志,而是从现有正则表达式创建一个新的正则表达式来替换或修改其标志。参见 http://www.2ality.com/2015/07/regexp-es6.html .该帖子的示例:
function copyWithIgnoreCase(regex) {
return new RegExp(regex, regex.flags + 'i');
}
关于javascript - 是否可以修改现有 RegExp 上的标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30100365/