You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求提供LibreCalc中验证合法IP与URL的有效公式及宏

LibreCalc IP地址与URL验证解决方案

一、完善的IP地址验证方案

方案1:使用TEXTSPLIT的数组公式(适合LibreCalc 7.0+)

这个公式能全面验证IPv4地址的合法性,覆盖段数、数值范围和前导零规则:

=AND(
    (LEN(A1)-LEN(SUBSTITUTE(A1,".","")))=3,
    ISNUMBER(TEXTSPLIT(A1,".")+0),
    MIN(TEXTSPLIT(A1,".")+0)>=0,
    MAX(TEXTSPLIT(A1,".")+0)<=255,
    SUMPRODUCT(--(LEFT(TEXTSPLIT(A1,"."),1)="0")*(LEN(TEXTSPLIT(A1,"."))>1))=0
)

注意:输入时需按Ctrl+Shift+Enter触发数组计算,返回TRUE为合法IP,FALSE为非法。

各部分作用:

  • 第一行:检查是否恰好有3个分隔点
  • 第二行:验证拆分后的每一段都是纯数字
  • 第三、四行:确保每段数值在0-255之间
  • 第五行:排除长度大于1但以0开头的段(如01.123.45.67这类非法格式)

方案2:兼容旧版LibreCalc的普通公式

如果你的版本不支持TEXTSPLIT,用手动提取每段的方式验证:

=AND(
    (LEN(A1)-LEN(SUBSTITUTE(A1,".","")))=3,
    ISNUMBER(--LEFT(A1,FIND(".",A1)-1)), --LEFT(A1,FIND(".",A1)-1)>=0, --LEFT(A1,FIND(".",A1)-1)<=255,
    IF(LEN(LEFT(A1,FIND(".",A1)-1))>1, LEFT(LEFT(A1,FIND(".",A1)-1),1)<>"0", TRUE),
    ISNUMBER(--MID(A1,FIND(".",A1)+1,FIND(".",A1,FIND(".",A1)+1)-FIND(".",A1)-1)), --MID(A1,FIND(".",A1)+1,FIND(".",A1,FIND(".",A1)+1)-FIND(".",A1)-1)>=0, --MID(A1,FIND(".",A1)+1,FIND(".",A1,FIND(".",A1)+1)-FIND(".",A1)-1)<=255,
    IF(LEN(MID(A1,FIND(".",A1)+1,FIND(".",A1,FIND(".",A1)+1)-FIND(".",A1)-1))>1, LEFT(MID(A1,FIND(".",A1)+1,FIND(".",A1,FIND(".",A1)+1)-FIND(".",A1)-1),1)<>"0", TRUE),
    ISNUMBER(--MID(A1,FIND(".",A1,FIND(".",A1)+1)+1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)-FIND(".",A1,FIND(".",A1)+1)-1)), --MID(A1,FIND(".",A1,FIND(".",A1)+1)+1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)-FIND(".",A1,FIND(".",A1)+1)-1)>=0, --MID(A1,FIND(".",A1,FIND(".",A1)+1)+1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)-FIND(".",A1,FIND(".",A1)+1)-1)<=255,
    IF(LEN(MID(A1,FIND(".",A1,FIND(".",A1)+1)+1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)-FIND(".",A1,FIND(".",A1)+1)-1))>1, LEFT(MID(A1,FIND(".",A1,FIND(".",A1)+1)+1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)-FIND(".",A1,FIND(".",A1)+1)-1),1)<>"0", TRUE),
    ISNUMBER(--RIGHT(A1,LEN(A1)-FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1))), --RIGHT(A1,LEN(A1)-FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1))>=0, --RIGHT(A1,LEN(A1)-FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1))<=255,
    IF(LEN(RIGHT(A1,LEN(A1)-FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1))>1, LEFT(RIGHT(A1,LEN(A1)-FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)),1)<>"0", TRUE)
)

返回TRUE为合法IP,可配合条件格式快速标记非法地址。

二、URL验证方案

1. 改进版公式验证

针对原公式的不足,增加域名结构检查:

=IF(
    AND(
        OR(LEFT(B1,7)="http://", LEFT(B1,8)="https://"),
        LEN(B1)>LEN(LEFT(B1,IF(LEFT(B1,8)="https://",8,7))),
        ISNUMBER(FIND(".",B1,IF(LEFT(B1,8)="https://",9,8)))
    ),
    "Valid URL",
    "Not a valid URL"
)

作用:

  • 验证开头是否为http://或https://
  • 确保协议后有实际内容
  • 检查协议后的部分包含至少一个点(符合基本域名格式)

2. 高精度宏验证(正则表达式)

如果需要更严格的验证,用LibreOffice Basic宏实现正则匹配:

  1. 按Alt+F11打开宏编辑器
  2. 右键点击左侧"我的宏"→"插入"→"模块"
  3. 粘贴以下代码:
Function IsValidURL(cellContent As String) As String
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")
    
    ' 正则规则:匹配http/https开头,带合法域名和可选路径的URL
    regex.Pattern = "^(https?:\/\/)([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$"
    regex.IgnoreCase = True ' 忽略大小写
    
    If regex.Test(cellContent) Then
        IsValidURL = "Valid URL"
    Else
        IsValidURL = "Not a valid URL"
    End If
End Function
  1. 回到表格,在目标单元格输入=IsValidURL(B1)即可获取验证结果。

内容的提问来源于stack exchange,提问作者john peter1986

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 11:07:46