使用正则表达式进行域名验证

时间:2015-07-22 12:42:03

标签: javascript regex

我想验证域名(仅限),该域名将被输入文本框。

接受标准:

abc.com
abc.in
abc.pqr.com
abc.com/xyz
abc.com/xyz/pqr
no.matter.how-many.domain-name.com/anything

拒绝:

http://example.com
(anything preceding with http:// or https:// or ftp://)
abc.com////
abc.com///xyz
.....likewise

我已尝试过这个:

^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.?)^[a-z0-9]?$/i

但它不需要:abc.com/xyz或abc.com/ (这是我的验收标准)

(之后)也尝试了这个:

/([\w-]+\.)+[\w-]+[.com|.in|.org]+(\[\?%&=]*)?/

这克服了上述问题,它也像:http://example.com (这是我的拒绝标准)

我对正则表达式并不擅长,因此,上述场景的正则表达式将是什么。 (在现有代码中我需要进行任何修改吗?)

3 个答案:

答案 0 :(得分:0)

这解决了我的问题:

^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})(\/(?:[\/\w \.-]*)*\/?)?([\/?#].*)?

This Article有帮助。

修改:不工作。同时接受..comexample.com/////abc

答案 1 :(得分:0)

试试这个:

/^[\w\-]+\.\w[\w\-\.]*((\/\w+)*|\/)$/igm

Regex Demo

答案 2 :(得分:-1)

这是我能想到的最好的。没有真正检查太多

^((?:[^:\/\.\s]+\.)+[^:\/\.\s]+(?:(?:\/[^:\/\.\s]+)*))$

regex101