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

JS日期字符串校验异常:误将非日期字符串判定为有效日期

问题原因及解决方案

问题根源

JavaScript原生的Date构造函数解析规则过于宽松,它会尝试从字符串中提取任意可识别的数字片段作为日期组件。比如输入DEV-50003时,它会忽略非数字前缀,把50003识别为年份,生成一个对应年份的合法日期对象,因此toString()不会返回'Invalid Date',导致误判。

正确的校验方式

既然你已经在使用moment.js,应该利用moment自带的严格校验能力,规避原生Date的宽松解析问题:

const parsedDate = moment(str, 'DD/MM/YYYY', true);
if (parsedDate.isValid()) {
    return parsedDate.local().format('DD/MM/YYYY');
}
  • 第三个参数true开启严格匹配模式,要求输入字符串必须完全符合指定的'DD/MM/YYYY'格式才会被判定为有效日期
  • 这种方式能精准过滤掉DEV-50003这类非日期格式的字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:03:03