我需要使用http://www...
编写一些与以下模式匹配的正则表达式。
http://www.domain.com/然后是跟随它的任何事情。我需要它匹配是否有“http://”,“www。”或任何尾随页面。我希望用户输入的所有内容都是domain.com。所以我想通过匹配http://www.domain.com/ ...
来抛出错误以下是我的想法:
new RegExp("^(http[s]?:\\/\\/(www\\.)?|www\\.){1}([0-9A-Za-z-\\.@:%_\+~#=]+)+((\\.[a-zA-Z]{2,3})+)(/(.)*)?(\\?(.)*)?");
但只有在有“http://”或“www。”时才会匹配。如何捕获URL中的尾随页面?任何页面。
答案 0 :(得分:1)
如何允许用户输入“无论什么”,并提取您需要的内容?
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
行更改为:
return url.hostname == userInput;
答案 1 :(得分:1)
难道你不能把它转过来让正则表达式与domain.com相匹配,而不是否定结果?
例如:
var foo = "domain.com";
if (! foo.match(/^[a-z0-9-]+\.[a-z]{2,6}$/)) {
// throw error
}
答案 2 :(得分:0)
以下是如何匹配网址的其余部分:
/(?:http[s]?:\/\/|www\.):?(?:[^\/]*)\/(.*)/.exec(str);
结果将在返回数组的第二个元素中。
/(:?http[s]?:\/\/|www\.):?(?:[^\/]*)\/(.*)/.exec('https://test.domain.com/page/page2');
返回
["https://test.domain.com/page/page2", "page/page2"]