【问题标题】:Creating a url regex to parse domain name创建一个 url 正则表达式来解析域名
【发布时间】:2012-09-24 13:36:53
【问题描述】:

我需要创建一个正则表达式来识别一个字符串,如果这是一个符合我的标准的 url,但我在识别域名时遇到了困难......

域名的标准是

  1. [a-z][0-9].-
  2. 第一个字符必须是[a-z]
  3. .-之前和之后必须是[a-z]
  4. 最小长度 1 个字符

域区域是

  1. [a-z].
  2. 第一个字符必须是.
  3. 最小长度 3 个字符

格式应为www.<domain name>.<domain region>

我得到了什么..

www.[a-z]([a-z0-9\.\-]{1,}[a-z][\.\-])+[^\.+\-].[a-z+\.]{2,}[^\.]$

这是域名

[a-z]([a-z0-9\.\-]{1,}[a-z][\.\-])+[^\.+\-]

这是针对域区域的

.[a-z+\.]{2,}[^\.]$

这将是www.sample.com.sg

  • www..sample.com 会因为.sample 而被拒绝
  • www.sample..com 会因为sample. 而被拒绝
  • www.sample.com.sg. 会因为.com.sg. 而被拒绝
  • www.sampl3.sample.com 将被拒绝,因为 sampl3. 规则 numb 3。

【问题讨论】:

  • 这是一个开始:www\.[a-z]([.-][a-z]|[a-z0-9])+
  • 您确定规则 3 吗? all-4-one.com 有什么问题?
  • thx.. 4 你的快速响应.. 但在域名的末尾,它不能是'.'或'-'..我该如何验证? err.. 我不认为这是识别 url 的一个很好的标准,但我有一个作业,这是我的讲师给出的标准.. 所以这就是为什么..ahahahhaa..xD
  • 这只是一个开始。它应该把你带到 TLD - 但不是你关于连字符周围只有字母的额外规则。
  • 哈哈哈..是的..这是真的..有了这个额外的规则,这不能是TLD..@_@

标签: c# javascript regex expression


【解决方案1】:

不要重新发明

这样的事情已经做过很多次了,最好利用现有的代码而不是重新学习所有的 URL 规则和规范要求。

【讨论】:

  • 是的..这将是一种以更简单的方式识别网址的好方法..但我必须使用正则表达式..所以谢谢回答..:D
【解决方案2】:

试试这个:^[a-zA-Z0-9-.]+.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$ 我没有预先测试过,所以可能需要很少的规定

【讨论】:

  • hmm.. 我以前看过那个代码.. 但我必须遵循我上面描述的那个标准.. 无论如何感谢您的回答..:D
  • com/org 等无法匹配美国以外的任何内容; .eu、.co.uk、.it。它甚至会因为 .me、bit.ly 等常见的东西而失败。
  • 是的..这仅适用于您提到的域名(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)..除此之外将失败
【解决方案3】:

编辑:

www\.(([a-z][a-z0-9]*)?[a-z][\.\-])*([a-z][a-z0-9]*)?[a-z]\.[a-z]{2,}$

疯长所以也许有更好的但是......

【讨论】:

  • 是的,我错过了域名必须以 [a-z] 开头的问题,但还不止这些吗?我将编辑正则表达式。
  • 错过了 [\.\-] 之前和之后的 [a-z] 部分到
  • 啊哈哈……是的……而且域名的最后一个不能是.或 -.. 之前不能有数字。和 -..@_@
  • 如果是这样的话[a-z]([a-z]+[0-9]*[a-z]+|[\.\-])+
  • 我真的不明白什么?意味着??..@@
猜你喜欢
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-05
  • 2012-08-23
  • 2012-06-15
相关资源
最近更新 更多