我编写了一个Javascript程序,可以根据主机名或URL找到根域名。
function getRootDomain(s){
var sResult = ''
try {
sResult = s.match(/^(?:.*\:\/?\/)?(?<domain>[\w\-\.]*)/).groups.domain
.match(/(?<root>[\w\-]*(\.\w{3,}|\.\w{2}|\.\w{2}\.\w{2}))$/).groups.root;
} catch(ignore) {}
return sResult;
}
什么技巧可以将两个正则表达式规则合并为一个规则?
我使用了这篇教程来提高多年来的正则表达式经验,尽管我从未真正理解过回顾和前瞻(这可能在这里有用?),然后使用RegEx101.com上的优秀工具进行试错。我尝试的是将
<root>
之后的内容粘贴到<domain>
之后的内容中,并对此进行变化,但所有尝试都失败了。可用于类似RegEx101的工具的测试集可以是:
https://test.com:8080/?id=4&re=3
https://test-test.com:8080/?id=4&re=3
https://data.test.com:8080/?id=4&re=3
https://data.test.com/?id=4&re=3
https://data.test.com/
https://data.test.com#testing
https://data.test.com/#testing
https://data.test.com:8080/#testing
https://data.test.com:8080#testing
https://data.tester.com/
https://data-test.test.com/
https://test.com
https://test.com#testing
https://test.com/
https://test.am/?id=4
https://test.com?id=3&re=3
https://test.com/?id=3&re=3
https://megatest.com/?id=3&re=3
test.com
data.test.co.uk
test.co
data.test.com
data.tester-test.com
data-test.tester-test.com
tester-test.com
about:blank