javascript - 是否可以修改现有 RegExp 上的标志?

标签 javascript regex

我的代码收到一个 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/

相关文章:

JavaScript 正则表达式解析 URL 数组

C++11 正则表达式和字符串 u8 前缀

javascript - 未能执行 objective-c om.github.eirslett :frontend-maven-plugin:1. 6:install-node-and-npm(安装 Node 和 npm)

javascript - Safari 在同一选项卡中触发 StorageEvent

c# - 使用正则表达式删除整个 Html 中的空格,但在 pre 内部

css - Aptana Studio 3 - 如何更改此命令(正则表达式替换)

javascript - d3.js if else 正则表达式字符串匹配以更改样式

javascript - 使用 IFrame 时将 JS 放在哪里

javascript - 使用 jQuery 更改所有表格边框颜色

javascript - 在数组中搜索以 JavaScript 中的某些字符结尾的值