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?

下一篇: Escape string for use in Javascript regex