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

JS中如何无需手动分段编写正则验证0-9223372036854775807的正长整数?

验证0到9223372036854775807的正则表达式方案

不用手动拆分所有数字区间的话,可以通过分场景匹配+负向预查排除非法值的方式实现,既简洁又能覆盖所有有效值:

正则表达式

^(0|[1-9]\d{0,17}|(?!922337203685477580[8-9]|92233720368547758[1-9]\d|922337203685477[6-9]\d{2}|9223372036854[8-9]\d{3}|922337203685[5-9]\d{4}|92233720368[6-9]\d{5}|922337203[9]\d{6}|9223372[1-9]\d{7}|922337[3-9]\d{8}|92233[8-9]\d{9}|9223[4-9]\d{10}|922[4-9]\d{11}|92[3-9]\d{12}|9[3-9]\d{13}|[1-9]\d{18}))\d{19})$

逻辑说明

这个正则把有效值分成三类处理:

  1. 单独的0:直接匹配0,避免前导零问题
  2. 1-18位正整数:用[1-9]\d{0,17}匹配,确保第一位非0,总长度不超过18位
  3. 19位有效整数:先匹配19位数字,再通过负向预查(?!...)排除所有大于9223372036854775807的情况:
    • 从左到右逐位对比目标值,只要某一位超过目标值对应位,后面不管是什么数字都直接排除
    • 比如922337203685477580[8-9]排除最后一位是8/9的19位数,92233720368547758[1-9]\d排除倒数第二位是1-9的19位数,以此类推

这种方式不用手动编写每一段允许的数字范围,而是通过反向排除非法值来实现,逻辑更清晰,也减少了手动分段的出错概率。

内容的提问来源于stack exchange,提问作者Andrea Costanzo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:01:00