JavaScriptRegex:如何在正则表达式中放置变量?

JavaScriptRegex:如何在正则表达式中放置变量?

例如:

function(input){
    var testVar = input;
    string = ...
    string.replace(/ReGeX + testVar + ReGeX/, "replacement")}

但这当然是行不通的:)有什么办法可以做到吗?


LEATH
浏览 1127回答 3
3回答

拉莫斯之舞

可以使用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);}
打开App,查看更多内容
随时随地看视频慕课网APP