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

JavaScript日期正则表达式验证问题:年份禁全零匹配异常

JavaScript日期正则修复:拦截全零年份

问题根源

你的正则表达式中,年份段[0-9]{4}会匹配任意四位数字,自然包括全零的0000,这就是11/11/0000未被拦截的原因。

当前正则:

'(?:(0[1-9]|1[012])[\/.](0[1-9]|[12][0-9]|3[01])[\/.][0-9]{4})'

修复方案

用负向前瞻断言(?!0000)排除全零年份,同时建议加上^和$锚点确保整个字符串匹配(避免部分匹配误判)。

修改后的正则:

/^(?:(0[1-9]|1[012])[\/.](0[1-9]|[12][0-9]|3[01])[\/.](?!0000)[0-9]{4})$/

测试验证

  • 合法输入:11/11/1000 → 匹配通过
  • 非法输入:11/11/0000 → 匹配失败(被拦截)

原理说明

(?!0000)是负向前瞻,作用是检查接下来的四位数字是否为0000,如果是则不匹配该年份;^和$锚点限定了正则必须匹配整个输入字符串,防止类似x11/11/2023y这类包含有效日期片段的无效字符串被误判。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:04:56