【发布时间】:2013-05-09 14:03:43
【问题描述】:
我一直找不到这个,而且我正在尝试的方法对我来说不太奏效。
我只想匹配符合以下条件的域:
- 不包含协议(http、https、ftp)
- 可选择包含子域
- 不要以连字符开头,但可以包含连字符
将匹配的示例域:
- domain.com
- example.domain.com
- example.domain-hyphen.com
- www.domain.com
- example.museum
不匹配的示例域:
- http://example.com
- 子域.-example.com
- example.com/parameter
- example.com?anything
- www.subdomain.domain.com
我目前拥有的:
/^(?!:\/\/)(^[a-zA-Z0-9])?.[a-zA-Z0-9-]+\.[a-zA-Z]{2,6}?$/i
它不匹配协议,允许域内使用连字符,不允许 TLD 后的尾随字符,并且允许子域(但只有 1 个字符)。
我仍然需要允许任何长度的子域,不允许 www.subdomain.domain.com 并且不允许前导连字符。
【问题讨论】:
-
那你怎么定义“域”呢?每个单词中至少有一个点?
-
不确定我是否理解。
domain在 TLD 之前,只能包含字母、数字和连字符。 -
好吧,那是我(失败的)允许子域的尝试。基本上这就是我被卡住的地方,也是我添加到这个正则表达式的最后一件事。
标签: javascript regex