JavaScript RegEx:如何使用变量中的特定值创建RegEx模式?

时间:2011-12-23 14:11:45

标签: javascript regex replace

我有这个变量:

var search = "dummy";
var replace = "<strong>" + search + "</strong>";
var contents = "my contents are here and this dummy value should be bolded...";

contents.replace(/search/gi, replace);

那么,如何在我的RegEx模式下设置此“搜索”变量,然后使用/ gi设置进行匹配。

3 个答案:

答案 0 :(得分:4)

尝试

new RegExp('yourSearchHere', 'gi');

你还应该意识到,你必须逃避某些序列。顺便说一句。当你构造这样的正则表达式时,你必须双重逃避这些(新的RegExp('\\ n') - &gt;匹配\ n)

答案 1 :(得分:3)

您还可以使用RegExp对象创建正则表达式:

search = "dummy";
x = new RegExp(search,"gi");

var search = "dummy";
var replace = "<strong>" + search + "</strong>";
var contents = "my contents are here and this dummy value should be bolded...";
window.alert(contents.replace(x, replace));

http://jsfiddle.net/YhqjY/

答案 2 :(得分:1)

您可以使用backreferences: 1美元是记住你与正则表达式匹配的内容。这样做是因为您要搜索的单词放在圆括号内,形成一个捕获组。

var contents = "my contents are here and this dummy value should be bolded...";


function makeStronger( word, str ) {
    var rxp = new RegExp( '(' + word +')', 'gi' );
    return str.replace( rxp, '<strong>$1<\/strong>' );
}

console.log( makeStronger( 'dummy', contents ) );
// my contents are here and this <strong>dummy</strong> value should be bolded...