javascript - 如何使用正则表达式与变量而不是字符串?

标签 javascript regex string variables

问了几次,但我无法让它工作。

我在一个脚本中做了很多这样的事情,替换了各种类名。

label.className.replace(/(?:^|\s)ui-icon-checkbox-on(?!\S)/g , ' ui-icon-globe');

并且想要用通用函数替换我的 replace 调用,该函数正在传递像 ui-icon-checkbox-on 这样的字符串,并返回一个正则表达式对象来处理我的替换。

但是,这不起作用=它没有取代任何东西:

var foo = function (className) {
  return new RegExp("(?:^|\s)" + className + "(?!\S)", "g");
};

label.className = label.className.replace(foo("ui-icon-checkbox-on"), ' ui-icon-globe');

我不知道为什么。

问题:
如何正确创建正则表达式对象,并使用它用另一个字符串替换一个字符串?

谢谢!

PS:不,我不想使用 jQuery 来做到这一点:-)

最佳答案

您需要转义转义的 RegExp 序列:

var foo2 = function (className) {
  return new RegExp("(?:^|\\s)" + className + "(?!\\S)", "g");
  //----------------------^^^---------------------^^^
};

您的原始函数将返回:

foo("ASD")
// returns:
/(?:^|s)ASD(?!S)/g

但我们追求的是:

foo2("ASD")
// returns:
/(?:^|\s)ASD(?!\S)/g

关于javascript - 如何使用正则表达式与变量而不是字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18614855/

相关文章:

javascript - 在鼠标悬停时显示(悬停)图表并在鼠标悬停时隐藏图表

javascript - 主要 JavaScript 引擎中 JavaScript 关联数组(动态对象属性)的检索/插入的复杂性是多少?

python - 负向后看量词未修复

regex - 如何在目录中匹配这种文件名模式,并输出匹配的?

javascript - JavaScript 中的 ' and "有什么区别?

Ruby 字符串连接

javascript - 在 JavaScript 中将 HTTP 响应保存为字符串

php - 如何 preg_match 第一次出现在字符串中

检查字符串中的字符是否是字母、数字或特殊字符。在c中

javascript - 如何在 Firefox Add On 中找出浏览器的用户代理