正则表达式并未切割网址

时间:2016-02-09 10:17:30

标签: javascript regex

我有以下代码给了我一些令人头疼的问题,因为所有这些代码在纸上都可以正常工作,但是当我把它付诸实践时,它会给我带来奇怪的结果。

代码的目的是在变量“domainurlcut”中获取页面的URL并将其剪切,然后检查该URL是否包含前缀“www”。如果是,则将其删除。 如果我使用正则表达式,一切正常:

domainurlcut = /\w+\.\w+/g.exec(domainurlcut);

但问题是,如果网址是www.google.co.uk,则无效。它会把它切成google.co 与www.google.com一样正常,因为它将返回google.com

我尝试通过将regexp修改为以下代码来解决此问题(目前在下面的代码中进行了评论)。

domainurlcut = /\w+\.\w+.\w+/g.exec(domainurlcut);

这解决了www.google.co.uk的问题,但后来我又遇到了另一个问题。 例如,如果我使用域名www.thingiverse.com对此进行测试,则警报的输出应为

"thingiverse.com" 

而是:

   "thingiverse.com,thingiverse"

你能帮我理解什么是错的吗? 通过检查http://regexr.com/上的正则表达式,它“应该”正常工作。

以下完整代码:

var domainurlcut = /(\w*\.+)+\w*/g.exec(window.location.href);

    if (/(www.)/g.test(domainurlcut)){  
        domainurlcut = /\.\w*.\w*.\w+/g.exec(domainurlcut); 
    //  domainurlcut = /\w+\.\w+.\w+/g.exec(domainurlcut);  
        domainurlcut = /\w+\.\w+/g.exec(domainurlcut);  
    }
    domainurlcut = domainurlcut[0];

    alert(domainurlcut);

1 个答案:

答案 0 :(得分:2)

试试这个

var url;
url = 'www.thingiverse.com'
url = 'www.google.co.uk'
var domainurlcut = /(\w*.)([\w.-\/]*)/.exec(url);

console.log(domainurlcut);
var result = domainurlcut[2];

alert(result);