当域名未知时(我可能是localhost),我试图使用正则表达式获取子域名。到目前为止,我有这个,但它没有localhost要求:
(.*?)\.(?=[^\/]*\..{2,5})|(?=localhost)
one.domain.com //matches 'one' which is correct
one.localhost:8000 //no match, expecting 'one'
domain.com //no match, as expected
答案 0 :(得分:1)
使用此正则表达式,您可以获取第一个捕获组以获取子域:
/(.*?)\.(\w+)[\.|\:]([A-Za-z0-9]{3,4})/g
测试它:
https://regex101.com/r/rC0lO5/2
所有绿色匹配都是子域名。
此更新的正则表达式与www.domain.com
或domain.com
不匹配,因为它们没有子域名:
/(.*?[^www])\.(\w+)[\.|\:]([A-Za-z0-9]{3,4})/g
答案 1 :(得分:0)
试试这个:
/([^.]+)\.([^.]+\.[^.]+|localhost)(?:[\d]+)?/
我建议在另一个步骤中检查匹配的子域是否等于www
以保持正则表达式简单。