2

应该如何是有效的域名正则表达式,它完全满足以下条件。

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

例如

一些有效的组合:

a
a.com
aa-bb.b

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

但目前它没有根据需要验证“-”部分(它是,缺失)

有什么办法吗?

如果我错了,请纠正我。

4

8 回答 8

3

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

"^(((([A-Za-z0-9]+){1,63}\.)|(([A-Za-z0-9]+(\-)+[A-Za-z0-9]+){1,63}\.))+){1,255}$"
于 2013-12-08T13:58:32.927 回答
2

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

  • 对总字符长度使用前瞻
  • 域可以选择以.
于 2018-08-29T16:59:54.317 回答
1

也许是这样:

^(([a-zA-Z0-9\-]{1,63}\.?)+(\-[a-zA-Z0-9]+)){1,255}$
于 2013-10-31T11:33:10.840 回答
1

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

https://docs.python.org/3/library/urllib.parse.html

它学习起来相当简单,而且使用起来更好更舒适。

于 2013-10-31T11:39:39.130 回答
1

不要重新发明轮子。您可以使用库,例如​​验证器。或者您可以复制他们的代码

安装

pip install validators

用法

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

万一您发现错误,您可以修复并报告错误。

于 2020-01-28T13:17:05.690 回答
0

不要使用正则表达式解析域名,使用urllib.parse

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

于 2013-10-31T11:23:20.340 回答
0

使用 | RE 中的运算符后跟“-”.. 确保您使用 \ 转义文字“-”

于 2013-10-31T11:25:44.537 回答
-1

试试这个:

^(([a-z0-9]\-*[a-z0-9]*){1,63}\.?){1,255}$
于 2013-10-31T11:23:33.143 回答