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。几分钟前我更新了代码,请确保您有正确的返回行。这对我有用。