域验证的正则表达式

时间:2014-10-29 11:55:05

标签: regex validation

我需要一个正则表达式来验证以下域类型。

https://www.google.co.in

www.google.co.in

google.co.in

google.com

subdomain.domain.com

正则表达式应该接受所有这些类型。

1 个答案:

答案 0 :(得分:1)

您可能希望对常规表达是否真的是您工作的首选工具有所了解。域名受制于约束条件,这使得正则表达式与它们相匹配很麻烦(读作:维持的噩梦)。

说完这个,试试

^(https://)?(www\.)?[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){1,2}$

说明:

  • 前面的可选https计划
  • 可选www.前缀
  • 域名中的每个子域至少有2个字符(不是标准强制要求,但某些注册管理机构要求至少有一些子域级别)

缺点:

  • 仅将域名与2个或3个段匹配
  • 仅匹配由ip地址提供的域名
  • 与所有允许的特殊字符不匹配。特别是,没有正确排除子域中的前导/尾随连字符
  • 未检查长度约束
  • 未检查顶级域名的有效性
  • 未检查IP地址规范的有效性
  • 没有高级正则表达式功能

建议:

使用更简单的表达式来检查基本的句法正确性:

^(http[s]?://)?([^.:/@#]+)(\.[^.:/@#]+)+$

根据需要独立检查微调器约束。当然,绘制分界线的位置有一个主观维度。

建议阅读:

所有适用的RFC。虽然这些是相当技术性的文档,并且通常不易于阅读,但所花费的努力是值得的,因为这些是权威来源。