2014-10-29 136 views

回答

1

您不妨花点时间思考一下,普通表达是否真的是您工作的首选工具。域名受限于正则表达式与它们相匹配的那种麻烦(读作:维护的噩梦)。

话虽如此,尝试

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

说明:

  • 可选https面前方案
  • 可选www.前缀
  • 在域名每个子至少有2个字符(不由标准授权但某些注册管理机构要求至少部分子域级别)

缺点:

  • 域名相匹配与给定的IP 2个或3段仅
  • 匹配的域仅不会忽略
  • 不匹配允许的所有特殊字符。特别是,不能正常排除前/后的子域连字符
  • 长度的限制不会检查顶级域的
  • 有效性不检查
  • 有效的IP地址的规格不检查
  • 没有先进的正则表达式功能

建议:

使用更简单的表达,以检查基本语法的正确性:

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

根据需要独立检查微调约束。当然,在哪里画分界线还有一个主观方面。

建议阅读:

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

+0

你可以给我jquery ..我使用jquery验证引擎 – 2014-10-30 06:14:51