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

实时日期输入验证:适配输入全流程的正则表达式需求

日期格式实时输入验证正则表达式方案

适用场景

React HTML输入框中实时拦截非法字符,仅限制输入格式符合指定阶段,不替代完整的日期有效性校验。

正则表达式

^$|^\d$|^\d{2}$|^\d{2}\.$|^\d{2}\.\d$|^\d{2}\.\d{2}$|^\d{2}\.\d{2}\.$|^\d{2}\.\d{2}\.\d$|^\d{2}\.\d{2}\.\d{2}$|^\d{2}\.\d{2}\.\d{3}$|^\d{2}\.\d{2}\.\d{4}$

正则逻辑说明

每个分支对应一个合法输入阶段:

  • ^$:匹配空输入
  • ^\d$:匹配单个数字(如"3")
  • ^\d{2}$:匹配两位数字(如"31")
  • ^\d{2}\.$:匹配两位数字加小数点(如"31.")
  • ^\d{2}\.\d$:匹配两位数字+小数点+一位数字(如"31.1")
  • ^\d{2}\.\d{2}$:匹配两位数字+小数点+两位数字(如"31.10")
  • ^\d{2}\.\d{2}\.$:匹配"XX.XX."格式(如"31.10.")
  • ^\d{2}\.\d{2}\.\d$:匹配"XX.XX.X"格式(如"31.10.1")
  • ^\d{2}\.\d{2}\.\d{2}$:匹配"XX.XX.XX"格式(如"31.10.19")
  • ^\d{2}\.\d{2}\.\d{3}$:匹配"XX.XX.XXX"格式(如"31.10.199")
  • ^\d{2}\.\d{2}\.\d{4}$:匹配"XX.XX.XXXX"格式(如"31.10.1998")

React中使用示例

import { useState } from 'react';

function DateInput() {
  const [dateValue, setDateValue] = useState('');

  const handleChange = (e) => {
    const inputValue = e.target.value;
    const validPattern = /^$|^\d$|^\d{2}$|^\d{2}\.$|^\d{2}\.\d$|^\d{2}\.\d{2}$|^\d{2}\.\d{2}\.$|^\d{2}\.\d{2}\.\d$|^\d{2}\.\d{2}\.\d{2}$|^\d{2}\.\d{2}\.\d{3}$|^\d{2}\.\d{2}\.\d{4}$/;
    
    // 仅当输入符合规则时更新状态
    if (validPattern.test(inputValue)) {
      setDateValue(inputValue);
    }
  };

  return (
    <input
      type="text"
      value={dateValue}
      onChange={handleChange}
      placeholder="DD.MM.YYYY"
    />
  );
}

export default DateInput;

注意事项

该正则仅负责实时拦截非法输入,确保输入结构符合要求。完整的日期有效性校验(如判断日期是否存在、年份范围是否合理等),需要在用户提交输入或输入框失焦时单独处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:20:36