如何使用尾随页面为网站URL编写正则表达式

时间:2013-10-31 21:54:54

标签: javascript regex

我需要使用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中的尾随页面?任何页面。

3 个答案:

答案 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"]