news 2026/6/10 14:20:01

验证IP地址(三)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
验证IP地址(三)

方法一:正则表达式

构造适用该题目的 “IPv4” 地址的正则表达式。注意前面讨论的前置零问题,它不属于 IPv4 地址。

在 Python 中使用原始字符串 r'' 构造正则表达式:

在 Java 中使用标准字符串构造正则表达式:

现在问题被简化为检查每个块是否正确,每个块的范围为 (0, 255),且不允许有前置零出现。一共有五种情况:

  1. 块只包含一位数字,范围是 0 到 9。
  2. 块包含两位数字,第一位的范围是 1 到 9,第二位是 0 到 9。
  3. 块包含三位数字,且第一位为 1。第二、三位可以是 0 到 9。
  4. 块包含三位数字,且第一位为 2,第二位为 0 到 4。那么第三位可以是 0 到 9。
  5. 块包含三位数字,且第一位为 2,第二位为 5,那么第三位可以是 0 到 5。

创建包含这 5 种情况的正则表达式。

使用相同逻辑构造匹配 IPv6 地址的正则表达式。

Python 实现

import re class Solution: chunk_IPv4 = r'([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' patten_IPv4 = re.compile(r'^(' + chunk_IPv4 + r'\.){3}' + chunk_IPv4 + r'$') chunk_IPv6 = r'([0-9a-fA-F]{1,4})' patten_IPv6 = re.compile(r'^(' + chunk_IPv6 + r'\:){7}' + chunk_IPv6 + r'$') def validIPAddress(self, IP: str) -> str: if '.' in IP: return "IPv4" if self.patten_IPv4.match(IP) else "Neither" if ':' in IP: return "IPv6" if self.patten_IPv6.match(IP) else "Neither" return "Neither"

Java 实现

import java.util.regex.Pattern; class Solution { String chunkIPv4 = "([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"; Pattern pattenIPv4 = Pattern.compile("^(" + chunkIPv4 + "\\.){3}" + chunkIPv4 + "$"); String chunkIPv6 = "([0-9a-fA-F]{1,4})"; Pattern pattenIPv6 = Pattern.compile("^(" + chunkIPv6 + "\\:){7}" + chunkIPv6 + "$"); public String validIPAddress(String IP) { if (IP.contains(".")) { return (pattenIPv4.matcher(IP).matches()) ? "IPv4" : "Neither"; } else if (IP.contains(":")) { return (pattenIPv6.matcher(IP).matches()) ? "IPv6" : "Neither"; } return "Neither"; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 17:31:15

专研墙角灯的企业,竟因“不务正业”火出圈?

专研墙角灯的企业,竟因“不务正业”火出圈?背后的逻辑,照明人都该看看“只懂得埋头打磨一颗螺丝钉,在今天的时代,远不足以构建真正的壁垒。真正的专家,是能跳出产品本身,为客户解决一整个系统级…

作者头像 李华
网站建设 2026/6/10 17:28:59

PID控制、BP-PID控制、PSO-BP-PID控制的Simulink仿真代码:清晰、易懂、...

PID控制、BP-PID控制、PSO-BP-PID控制的Simulink仿真。代码清晰、易懂,代码质量极高,便于新手学习和理解。搞过自动控制的同学对PID肯定不陌生,但今天咱们玩点有意思的——用Simulink把传统PID、带神经网络的BP-PID、还有用粒子群优化的PSO-B…

作者头像 李华
网站建设 2026/6/10 17:24:20

玩转Sobol参数灵敏度分析:MATLAB实战手册

基于sobol的全局参数灵敏度分析 可自行更改参数数目和目标函数matlab编程 注:因程序可下载,一经出,概不退换,敬请谅解。遇到十几个参数需要调优的仿真模型怎么办?Sobol全局灵敏度分析就是那个帮你揪出"关键先生"的神器。…

作者头像 李华
网站建设 2026/6/10 17:27:41

基于脉振高频电流注入的永磁同步电机无感FOC。 采用脉振高频电流注入法实现零低速下无感起动运行

基于脉振高频电流注入的永磁同步电机无感FOC。 采用脉振高频电流注入法实现零低速下无感起动运行,相比电压注入法可以省去电流反馈中的两个低通滤波器;相比高频电压注入,估计系统的稳定性不受电机定子电阻、电感变化以及注入信号频率的影响&a…

作者头像 李华
网站建设 2026/6/9 22:31:31

搞工业自动化的兄弟都懂,遇到扫码枪和PLC联机这事儿说简单也不简单。上个月刚在车间折腾完一套FX3U配得利捷扫码枪的方案,今天就把实战经验掏出来聊聊

三菱FX3U与扫码枪通讯程序(SL3U-4) 功能:使用三菱FX3U485BD板,使三菱PLC串口与扫码枪通讯。 实现扫码枪扫条码,反应灵敏,通讯稳定可靠。 其他扫码枪可以参考这个 器件:三菱FX3UPLC,三菱fx3u485BD&#xff0…

作者头像 李华