2012-07-15 138 views
0

我想创建一个只解析符合当前域的链接的正则表达式。我想知道是否有像{hostname}这样的内容可以在Javascript正则表达式对象中使用,因此它只会将搜索锁定到针对当前页面特定域的那些链接。正则表达式中的域名/主机名Javascript

例如:如果域是www.domain.com,它将搜索仅链接以该特定域开始的链接。如果域名是anotherdomain.com,它将只搜索以该特定域名开头的链接。我的正则表达式更复杂,但我希望能够放置某种全局变量,它将被当前域取代。

+0

你有任何代码你写的吗?目前的答案是“否”。 – Polyov 2012-07-15 17:36:50

+0

不可以。但是,您能分享您想要做的更多细节吗?为什么你只需要一个正则表达式和正则表达式?我有一种感觉,这可以用更简单的方式解决。 – 2012-07-15 17:39:01

回答

2

您可以通过Location对象检索当前页面的主机名:

var hostname = window.location.hostname; 

然后你就可以通过连接到你的正则表达式组合使用变量的正则表达式:

var re = new RegExp("<start of your regex>" + hostname + "<end of your regex>"); 
2

你可以从window.location.hostname获取主机名。

然后,您将希望转义主机名中潜在的特殊字符。

主机名通常包括.这是一个正则表达式中的特殊字符,它当然也可以包含-,它可以是一个特殊字符。

可能最好是进行防御性编程,并在正则表达式中使用特殊字符来逃避所有可能是特殊字符的东西,即使它们中的很多不应该真正出现。从Escape string for use in Javascript regex您可以使用此功能:

function escapeRegExp(str) { 
    return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); 
} 

然后你可以这样做:

var regexpFragment = escapeRegExp(window.location.hostname); 
+0

+1用于转义特殊字符,我忘记提及了。 – joelrobichaud 2012-07-15 18:46:50