【发布时间】:2015-07-25 02:53:03
【问题描述】:
我浏览了标题相同的问题列表,但没有一个回答我的问题,所以我不得不创建一个新问题。
我正在尝试使用 js 中的正则表达式从字符串中获取域名。以下是一些示例:
- www.demo.com
- http://demo.co.uk/
- https://demo.com/foo.html?q=bar
- https://www.demo.com/foo.html?q=bar
- http://demo.co.uk/foo.html?q=bar
- http://www.demo.com/foo.html?q=bar
- www.demo.com.co
- demo.com
- demo.co.uk
以上所有都应该返回'demo'
我当前的正则表达式看起来像这样
(\/{2}www\.|\/{2}|www\.)([^\...\.?]+)\.
它通过了除了最后一个之外的所有情况,我厌倦了将另一个选项设置为 \0,但它仍然与最后一个测试不匹配。
您可以查看它与大多数here
【问题讨论】:
-
([^.\s/]+)\.[^.\s]+(?:/|$)是否足以满足您的需求? -
如果您在我提供的链接上使用您的正则表达式,您会发现它与 www.demo.com 和 www.demo.com.co 不匹配
-
对。
([^.\s/]+)\.[^.\s]+(?:\/|$|\s),那么。 -
我问的原因是因为你不太清楚你的规则到底是什么。例如,对于
demo.co.uk,您希望域是co、demo.co,还是只是简单的demo? -
你可能没有测试过它,因为它匹配域直到下一个链接的第一个字符,我也用你的例子更新了这个问题。
标签: javascript regex