我正在尝试创建与此类似的东西:
var regexp_loc = /e/i;
除了我希望regexp依赖于一个字符串,所以我尝试使用新的RegExp,但我无法得到我想要的东西。
基本上我希望上面的regexp中的e
是一个字符串变量,但是我的语法失败了。
我试过这样的事情:
var keyword = "something";
var test_regexp = new RegExp("/" + keyword + "/i");
基本上我想在一个更大的字符串中搜索一个子字符串,然后用其他字符串替换该字符串,不区分大小写。
的问候, 亚历山大
答案 0 :(得分:73)
答案 1 :(得分:43)
您还应该记住要注意字符串中的转义字符......
例如,如果您希望检测单个数字\ d {1}并且您执行了此操作...
var pattern = "\d{1}";
var re = new RegExp(pattern);
re.exec("1"); // fail! :(
因为初始\是一个转义字符而失败,你需要“逃避逃脱”,就像这样......
var pattern = "\\d{1}" // <-- spot the extra '\'
var re = new RegExp(pattern);
re.exec("1"); // success! :D
答案 2 :(得分:11)
答案 3 :(得分:1)
想在此处分享一个示例: 我想将一个字符串替换为:hi [var1] [var2]到hi [newVar] [var2]。 和var1是在页面中动态生成的。
所以我不得不使用: var regex = new RegExp(“\\ [”+ var1 +“\\]”,'ig'); mystring.replace(正则表达式, '[newVar]');
这对我来说非常好。如果有人像我这样需要这个。 我必须使用[]的原因是var1本身可能是一个非常简单的模式,添加[]会非常准确。
答案 4 :(得分:0)
var keyword =&#34;某事&#34 ;;
var test_regexp = new RegExp(something,"i");
答案 5 :(得分:0)
您需要转换 RegExp ,实际上您可以创建一个简单的函数来为您完成此操作:
function toReg(str) {
if(!str || typeof str !== "string") {
return;
}
return new RegExp(str, "i");
}
并这样称呼它:
toReg("something")