Javascript 如何为带有尾随页的网站url编写正则表达式

Javascript 如何为带有尾随页的网站url编写正则表达式,javascript,regex,Javascript,Regex,我需要用http://www... 然后是它后面的任何东西。我需要它匹配是否有“http://”、“www.”或任何后续页面。实际上,我只希望用户输入domain.com。所以我想通过匹配 以下是我的想法: newregexp(“^(http[s]?:\\/\\/(www\\)?\\\/\\\){1}([0-9A-Za-z-\.@:%\+~\=]+)+(\\.[a-Za-z]{2,3}+)(/(*)(/((*)(\?(*))” 但只有在有“http://”或“www.”的情况下才匹配。如何捕获U

我需要用
http://www...

然后是它后面的任何东西。我需要它匹配是否有“http://”、“www.”或任何后续页面。实际上,我只希望用户输入domain.com。所以我想通过匹配

以下是我的想法:

newregexp(“^(http[s]?:\\/\\/(www\\)?\\\/\\\){1}([0-9A-Za-z-\.@:%\+~\=]+)+(\\.[a-Za-z]{2,3}+)(/(*)(/((*)(\?(*))”


但只有在有“http://”或“www.”的情况下才匹配。如何捕获URL中的尾随页?任何页面。

允许用户输入“whatever”,然后您拿出所需内容,怎么样

function extractHost(userInput){
    var url = document.createElement('a');
    url.href = userInput;
    return url.hostname;
}

console.log(extractHost('http://stackoverflow.com/foo?bar=1'));

// stackoverflow.com
或者,如果要为主机名以外的任何内容返回“false”,请将
返回
行更改为:

return url.hostname == userInput;

以下是如何匹配url的其余部分:

/(?:http[s]?:\/\/|www\.):?(?:[^\/]*)\/(.*)/.exec(str);
结果将出现在返回数组的第二个元素中

/(:?http[s]?:\/\/|www\.):?(?:[^\/]*)\/(.*)/.exec('https://test.domain.com/page/page2');
返回

["https://test.domain.com/page/page2", "page/page2"]

难道你不能把它转过来,让正则表达式匹配domain.com,然后否定结果吗

例如:

var foo = "domain.com";
if (! foo.match(/^[a-z0-9-]+\.[a-z]{2,6}$/)) {
  // throw error
}

因此,如果他们进入
domain.com/page
,我想抓住它。你基本上是说你想匹配
http://
www.
?或任何页面。从字面上说,我只想让domain.com验证一些示例输入和输出会很有帮助,因为我似乎无法理解您的需求。我唯一想通过验证的是domain.com。在domain.com之后没有页面,也没有
http://
www.
因此我希望正则表达式捕捉
domain.com/page
http://domain.com
www.domain.com
。那有用吗?我喜欢。让我试试。stackoverflow返回false。几分钟前我更新了代码,请确保您有正确的
返回行。这对我有用。