主机名和 IP 的正则表达式

问题描述 投票:0回答:2

我正在尝试找到一个正则表达式来验证 IP 地址,以及一个用于验证 Javascript 中的主机名的正则表达式。

我在这里和其他地方查看了很多帖子,但找不到适合我需求的帖子。

对于IP我发现两个工作正常(不知道除了格式之外是否还有差异):

1:(这是我首选的 IP 地址正则表达式)

^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

2:

^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$

对于主机名,我找到了这个:

/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/

这也很好用。

但是^^ 问题是主机名正则表达式将验证

192.168.178.1111

这不是主机名,这是无效的 IP 地址。

我想将主机名和 IP 正则表达式放在一个正则表达式术语中,但由于主机名正则表达式将验证任何无效的 IP 地址,我无法将它们组合起来。

有人知道如何创建一个不会验证无效 IP 地址的主机名正则表达式吗?

编辑:我也找到了这个: http://jsfiddle.net/opd1v7au/2/

但这将验证例如:

::2:3:4:5

我的申请无法接受。


解决方案:感谢Aaron我现在有这个正则表达式,它似乎有效(目前正在测试中)

^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)+([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$

用于验证 IP 地址和主机名的组合版本 ->RegExr.com:

^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)+([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$
javascript regex
2个回答
3
投票

基于这个SU答案,我建议进行此修改,它接受以数字开头的标签,顶级域除外:

/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$/

0
投票

基于 AAron 解决方案,以逗号分隔的正则表达式:

/((((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([4-9]|[12][0-9]|3[0-2]))?)([,\s]+|$))*)|(((([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)+([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])([,\s]+|$))*)/gm

您的意见(参见https://regex101.com/r/JVHcUm/1)?

© www.soinside.com 2019 - 2024. All rights reserved.