正则表达式Javascript中的域/主机名

时间:2012-07-15 17:18:13

标签: javascript regex

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

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

2 个答案:

答案 0 :(得分:2)

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

var hostname = window.location.hostname;

然后你可以通过将它连接到你的正则表达式来使用该变量来编写你的正则表达式:

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

答案 1 :(得分:2)

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

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

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

可能最好参与防御性编程并逃避正则表达式中可能是特殊字符的所有内容,即使其中很多内容实际上不应该出现。从Escape string for use in Javascript regex开始,您可以使用此功能:

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

然后你可以这样做:

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