ZH
我的工具

数字正则表达式生成器(整数、小数、千位分隔、范围)

生成整数、小数、1,234.56 或 1.234,56 分隔、科学计数法、百分数以及 1–255 这类数值范围的正则表达式,并立即测试。

正则表达式
/^(?:[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/
JavaScript
代码
const ok = /^(?:[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/.test(value);
匹配数
5
不匹配
4

这里使用 [0-9] 而不是 \d,以保证在所有语言中都只匹配 ASCII 数字。

正则表达式比较的是文本而不是数值,所以要把范围拆成若干段:1–255 就是 [1-9]、[1-9][0-9]、1[0-9]{2}、2[0-4][0-9] 和 25[0-5]。

测试结果
行值结果数字或原因
10不匹配超出范围:1–255
21匹配1
399匹配99
4100匹配100
5199匹配199
6255匹配255
7256不匹配超出范围:1–255
8007不匹配前导零
9-5不匹配超出范围:1–255
该表达式检查的内容
部分规则
范围1 到 255 拆成 5 段(每段中的数字位可独立变化)
我的工具 →
广告

数字看起来简单,但一个好用的正则表达式要考虑很多细节:是否允许 007,数值能否以“.”开头,千位分隔符是逗号(1,234.56)、点号(1.234,56)还是空格,以及怎样只匹配 1 到 255 的数字。这个生成器根据这些选择生成表达式(包括经典的“数值范围转正则”),输出 JavaScript、PHP、Python、Java 和 C# 的代码,并可用你自己的值测试,或从文本中提取数字。

使用方法

  1. 选择数字类型,或选择“整数范围”并输入起止值。
  2. 设置符号、小数位数,以及是否允许前导零或“.5”。
  3. 选择语言,以及校验还是查找。
  4. 用你的值测试,然后复制正则表达式。

计算公式

整数:0|[1-9][0-9]* · 小数:整数(\.[0-9]+)? · 千位分隔:[1-9][0-9]{0,2}(,[0-9]{3})+ · 范围:把 [最小, 最大] 按 9…9 和 …0 的边界拆分

对于范围,会在数位进位的地方(9 → 10、99 → 100,以及上限的十位和百位)切开,使每一段都可以写成固定数字加字符类;负数范围会多出一个负号分支。千位分隔表达式要求完整的三位一组(印度式的拉克/克罗尔为两位一组),同时也接受不带分隔符的纯数字。在“查找”模式中,匹配结果不能紧挨着其他数字,所以 1.2.3 和较长数字的一部分会被跳过。

示例

1 到 255 的范围,表达式为 ^(?:[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$。在示例列表中,1、99、100、199 和 255 匹配(5 个);0 和 256 超出范围,007 有前导零,−5 是负数。选择“逗号千位分隔”时,1,234,567.89 匹配,而 1,23,456 不匹配,因为第一组之后的每一组都必须是三位。

常见问题

为什么不直接用 \d+ 匹配再比较数值?

在代码里这样做往往更好。正则适用于只接受表达式的场合:表单校验属性、配置文件、搜索工具和日志过滤器。

范围表达式适用于小数吗?

不适用,它针对整数。对于小数的上下限,请先用小数表达式匹配数字,再在代码中比较数值。

应该用哪种分隔写法?

英语国家、韩国、日本和中国写作 1,234.56;欧洲大陆大部分地区和拉丁美洲写作 1.234,56;法语和国际单位制写法使用空格;印度则按 12,34,567.89 分组。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). 数字正则表达式生成器(整数、小数、千位分隔、范围). https://kakao.mobile/zh/tools/number-regex-tool/

MLA

“数字正则表达式生成器(整数、小数、千位分隔、范围).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/number-regex-tool/.

广告