在JavaScript正则表达式中放置变量

Placing variable in JavaScript regex

本文关键字:变量 JavaScript 正则表达式      更新时间:2023-09-26

我有一个像这样的正则表达式:

var reg = /http:'/'/s('d+)'.de'.example'.com'/(.*?)'.php(.*)/i;

我想要一个变量,就是这样:ccode[i][2]代替.de

我该怎么做?谢谢你的帮助。

如果您想在regex模式中使用变量,则需要使用RegExp构造函数符号,并且在其中,需要对特殊的regex元字符进行双转义。例如

var reg = new RegExp("http://s(''d+)''." + ccode[i][2] + "''.example''.com/(.*?)''.php(.*)", "i");
从MDN:

当你知道正则表达式模式将会改变时,或者你不知道该模式并从其他来源(如用户输入)获取它时,使用构造函数。

示例代码:

var ccode = "de";
var reg = new RegExp("http://s(''d+)''." + ccode + "''.example''.com/(.*?)''.php(.*)", "i");
alert(reg.test("http://s123.de.example.com/something.php?some=params"));

试试这个

var reg = '/http:'/'/s('d+)'''+ccode[i][2]+''.example'.com'/(.*?)'.php(.*)/i';