Javascript regex从链接导出域名
我用相同的标题浏览了问题列表,但没有一个回答我的问题,所以我不得不创建一个新的问题 我正在尝试使用js中的正则表达式从字符串中获取域名。以下是一些例子:Javascript regex从链接导出域名,javascript,regex,Javascript,Regex,我用相同的标题浏览了问题列表,但没有一个回答我的问题,所以我不得不创建一个新的问题 我正在尝试使用js中的正则表达式从字符串中获取域名。以下是一些例子: www.demo.com www.demo.com.co demo.com demo.co.uk 以上所有内容都应返回“演示” 我现在的正则表达式是这样的 (\/{2}www\.|\/{2}|www\.)([^\...\.?]+)\. 它通过了除最后一个之外的所有情况,我尝试将另一个选项设置为\0,但它仍然与最后一个测试不匹配 您可
(\/{2}www\.|\/{2}|www\.)([^\...\.?]+)\.
它通过了除最后一个之外的所有情况,我尝试将另一个选项设置为\0,但它仍然与最后一个测试不匹配
您可以查看与其中大多数匹配的正则表达式这是您的正则表达式:
(^|www|http://|https://)+(\.)?(.+?)\.
说明:
(^ | www | http://https://)
-匹配www
、http://
、https://
或无
(因此出现了^
)
(\)?
可能有一个点(如果它以www
开头)
(.+?)\。
-获取域中的所有字符(直到下一个点)
使用($3
)获取域
是否
([^.\s/]+)\[^.\s]+(?:/|$)
满足您的需要?如果您在我提供的链接上使用正则表达式,您可以看到它与www.demo.com和www.demo.com.coRight不匹配([^.\s/]+)\.[^.\s]+(?:\/$\s)
,那么。我问你的原因是你不太清楚你的规则是什么。例如,对于demo.co.uk
,您希望域是co
,demo.co
,还是只是简单的demo
?您可能没有测试它,因为它与域匹配,直到下一个链接的第一个字符,我也用您的示例更新了这个问题。
^(?:(https?):\/\/)?(?:([^:\/\s.]+)\.)?(([^:\/\s]+))(((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?)?$
^(?:(https?):\/\/)? http://
(?:([^:\/\s.]+)\.)? subdomain.
(([^:\/\s]+)) domain.com
(((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?)?$ remaining