有效的域名正则表达式

时间:2013-10-31 11:15:38

标签: python regex

如何有效填写以下条件的有效域名正则表达式。

  1. 每个标签最多63个字符,最少1个字符
  2. 包含数字,字母和' - ',但
  3. 不应该以' - '
  4. 开头和结尾
  5. 最大域名长度最少255个字符1。
  6. 例如

    一些有效的组合:

    a
    a.com
    aa-bb.b
    

    我创建了这个^(([a-z0-9]){1,63}\.?){1,255}$

    但目前它没有根据要求验证' - '部分(它是,缺少)

    有什么办法吗?

    如果我错了,请告诉我。

8 个答案:

答案 0 :(得分:3)

并且必须以'。'结尾。 : 在这里我找到了解决方案

"^(((([A-Za-z0-9]+){1,63}\.)|(([A-Za-z0-9]+(\-)+[A-Za-z0-9]+){1,63}\.))+){1,255}$"

答案 1 :(得分:1)

也许这个:

^(([a-zA-Z0-9\-]{1,63}\.?)+(\-[a-zA-Z0-9]+)){1,255}$

答案 2 :(得分:1)

不要重新发明轮子。您可以使用一个库,例如验证者。或者,您可以复制their code

安装

pip install validators

用法

import validators
if validators.domain('example.com')
    print('this domain is valid')

在不太可能的情况下,如果您发现错误,则可以修复并报告该错误。

答案 3 :(得分:0)

请勿使用正则表达式解析域名,请使用urllib.parse

如果您需要在HTML中查找有效的域名,请使用正则表达式[ <>]拆分页面文本,然后使用urllib.parse解析每个结果字符串。

答案 4 :(得分:0)

试试这个:

^(([a-z0-9]\-*[a-z0-9]*){1,63}\.?){1,255}$

答案 5 :(得分:0)

使用| RE中的运算符后跟' - '..确保使用\

转义文字' - '

答案 6 :(得分:0)

而不是使用正则表达式尝试查看urlparse

http://docs.python.org/library/urlparse.html

学习相当简单,使用起来更加舒适。

答案 7 :(得分:0)

此表达式应满足所有要求: ^(?=.{1,255}$)(?!-)[A-Za-z0-9\-]{1,63}(\.[A-Za-z0-9\-]{1,63})*\.?(?<!-)$

  • 使用超前的字符总长度
  • 域可以选择以.结束