我有以下代码给了我一些令人头疼的问题,因为所有这些代码在纸上都可以正常工作,但是当我把它付诸实践时,它会给我带来奇怪的结果。
代码的目的是在变量“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);
答案 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);