如何在COMPLEX reg表达式中使用js变量,而不是简单的变量

时间:2015-10-14 18:48:24

标签: javascript regex

请在为我发出正确答案之前停止标记为重复问题。 这篇文章不是某人在谷歌上炫耀他的粗略搜索技能的地方。

简单的reg exp不是注入js变量的问题。但是像下面那样复杂的呢?

我有一个reg表达式来检查URL是否来自example.com域。

^(https?:\/\/(.+?\.)?example\.com(\/[A-Za-z0-9\-\._~:\/\?#\[\]@!$&'\(\)\*\+,;\=]*)?)

现在我要创建一个函数isValidDomainURL(url, domain) 我希望在上面的表达式中使用example\.com替换domain

如何在其中使用js变量创建一个reg表达式?

1 个答案:

答案 0 :(得分:1)

您可以使用RegExp构造函数。

var theVariable = "Hello"

var theRegex = new RegExp("." + theVariable + ".");

使用您的特定网址,它将类似于以下内容。

var domain = "somedomain.com";
var theRegex = new RegExp("^(https?:\/\/(.+?\\.)?" + domain + "(\/[A-Za-z0-9\\-\\._~:\/\\?#\\[\\]@!$&'\(\)\*\+,;\\=]*)?)")

然后您可以在任何地方使用该正则表达式,或者根据需要创建具有不同域的新正则表达式。