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

如何修改正则表达式以接受含正整数与正浮点数的二维数组?

二维数组字符串正则验证:仅匹配正整数与正浮点数

问题描述

我有一个二维数组字符串,需要验证其中仅包含大于0的整数(int)与浮点数(double)。目前使用正则表达式pattern="^[[[0-9.,[]]+]]$"进行验证,但该表达式会接受0值,需要修改它以仅匹配正整数与正浮点数。

期望的有效示例:

[[5,0.05],[10,0.1],[15,0.15],[20,0.2],[25,0.25],[30,0.3],[35,0.35],[40,0.4],[45,0.45],[50,0.5],[55,0.55],[60,0.6],[65,0.65],[70,0.7],[75,0.75],[80,0.8],[85,0.85],[90,0.9],[95,0.95],[100,1]]

解决方案

首先明确正整数和正浮点数的匹配规则:

  • 正整数:第一位为非0数字,后续可跟任意数量数字(如5、100)
  • 正浮点数:分为两种情况
    1. 整数部分为0,但小数部分至少包含一个非0数字(如0.05、0.1)
    2. 整数部分为非0数字,后续跟小数点和任意数量数字(如5.05、100.1)

结合二维数组的结构[[num,num],[num,num],...],最终正则表达式如下:

^\[\[(?:(?:[1-9]\d*|0\.\d*[1-9]\d*|[1-9]\d*\.\d+)(?:,(?:[1-9]\d*|0\.\d*[1-9]\d*|[1-9]\d*\.\d+))*)\](?:,\[(?:(?:[1-9]\d*|0\.\d*[1-9]\d*|[1-9]\d*\.\d+)(?:,(?:[1-9]\d*|0\.\d*[1-9]\d*|[1-9]\d*\.\d+))*)\])*]$

正则表达式拆分解释

  • ^ 和 $:锁定字符串首尾,确保整个字符串完全匹配规则
  • \[\[:匹配二维数组的起始符号[[
  • (?:[1-9]\d*|0\.\d*[1-9]\d*|[1-9]\d*\.\d+):核心数字匹配组,覆盖所有正整数和正浮点数情况
    • [1-9]\d*:匹配正整数
    • 0\.\d*[1-9]\d*:匹配整数为0但小数部分含非0数字的浮点数
    • [1-9]\d*\.\d+:匹配整数部分非0的浮点数
  • (?:,(?:数字规则))*:匹配同一子数组内多个数字用逗号分隔的情况
  • \]:匹配单个子数组的结尾符号]
  • (?:,\[(数字组)\])*:匹配多个子数组用逗号分隔的情况
  • ]$:匹配二维数组的结尾符号]

测试验证

  • 有效输入:用户提供的示例字符串会被匹配通过
  • 无效输入:包含0、0.0、-5等内容的数组字符串会被拒绝

内容的提问来源于stack exchange,提问作者Rizana Fazily

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:42:57