Javascript正则表达式:如何在正则表达式中放置一个变量?
例如:
function(input){
var testVar = input;
string = ...
string.replace(/ReGeX + testVar + ReGeX/, "replacement")
}
但是,这当然不工作:)有没有办法做到这一点?
var regex = new RegExp("ReGeX" + testVar + "ReGeX");
...
string.replace(regex, "replacement");
更新
根据一些评论,重要的是要注意,如果存在恶意内容的潜在可能性(例如,变量来自用户输入),您可能想要转义该变量,
您可以使用RegExp对象:
var regexstring = "whatever";
var regexp = new RegExp(regexstring, "gi");
var str = "whateverTest";
var str2 = str.replace(regexp, "other");
document.write(str2);
然后你可以用你想要的任何方式构造正则regexstring
。
你可以在这里读更多关于它的内容。
要从JavaScript中的变量构建正则表达式,您需要使用带有字符串参数的RegExp
构造函数。
function reg(input) {
var flags;
//could be any combination of 'g', 'i', and 'm'
flags = 'g';
return new RegExp('ReGeX' + input + 'ReGeX', flags);
}
当然,这是一个非常天真的例子。 它假定input
已正确转义为正则表达式。 如果您正在处理用户输入内容,或者只是想让匹配特殊字符更方便,则需要转义特殊字符:
function regexEscape(str) {
return str.replace(/[-/^$*+?.()|[]{}]/g, '$&')
}
function reg(input) {
var flags;
//could be any combination of 'g', 'i', and 'm'
flags = 'g';
input = regexEscape(input);
return new RegExp('ReGeX' + input + 'ReGeX', flags);
}
链接地址: http://www.djcxy.com/p/76815.html
上一篇: Javascript Regex: How to put a variable inside a regular expression?