【问题标题】:Use variable inside the regular expression in javascript [duplicate]在javascript的正则表达式中使用变量[重复]
【发布时间】:2015-01-21 23:32:45
【问题描述】:

我的代码:

var string = "I put putty on the computer. putty, PUT do I"

var uniques = {};

var result = (string.match(/\b\w*put\w*\b/ig) || []).filter(function(item) {
   item = item.toLowerCase();
   return uniques[item] ? false : (uniques[item] = true);
});

document.write( result.join(", ") );

这里我想在表达式中传递一个变量

在这里我传递了一个值 'put' 并得到答案。但是我必须为这个值使用变量

我试过 string.match(/\b\w*{+put+}\w*\b/ig

你能分享你的答案吗

【问题讨论】:

  • 使用new RegExp("")它可以将正则表达式作为字符串,因此可以轻松地将变量添加到其中。
  • 我看不懂,请提供一些示例

标签: javascript jquery


【解决方案1】:

您应该创建一个特定的Regular Expression object 以与.match() 函数一起使用。这样,您可以使用字符串创建正则表达式并在创建时插入变量:

var changing_value = "put";
var re = new RegExp("\\b\\w*" + changing_value + "\\w*\\b", "ig");

请注意,忽略大小写 (i) 和全局 (g) 修饰符被指定为 RegExp 构造函数的第二个参数,而不是实际表达式的一部分。另外,您需要在构造函数 because \ is also an escape character in strings. 中转义 \ 字符

另外需要注意的是,在使用 Regexp 构造函数时,表达式的开头和结尾不需要 /delimiters/

现在您可以在调用 .match() 时使用 Regexp 对象:

string.match( re )

最后一点,我不建议您使用名称 string 作为变量名...从语法高亮中可以看出,string 是保留的word 并且不建议使用内置类型的名称作为变量名称,因为它们可能会引起混淆。

【讨论】:

  • 对于 RegExp 构造函数,所有转义集合都应使用额外的反斜杠 (\\) 进行转义。
  • @Bala - 我知道:/我知道...实际上发生了相反的情况...我先发布了答案,然后意识到它可能是重复的。
  • @VisioN- 我确实错过了 :) 感谢您的反馈!添加了更正和参考。
  • 这个答案不起作用。你能用完整的编码分享另一个答案
猜你喜欢
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 2013-06-17
  • 1970-01-01
  • 2017-11-04
  • 2014-01-06
  • 1970-01-01
相关资源
最近更新 更多