【问题标题】:How to validate date yymmdd with leap year support如何使用闰年支持验证日期 yymmdd
【发布时间】:2022-01-25 00:54:57
【问题描述】:

我需要使用正则表达式验证 yymmdd 格式的文本输入。

<input type="text" class="form-control" maxlength="12" name="ic_no" 
pattern="(((0[048]|[2468][048]|[13579][26])0229)|[0-9]{2}(?:(?:0[1-9]|1[0-2])(?:0[1-9]|1[0-9]|2[0-9])
|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31)))[0-9]{6}" required>

ic_no 表示身份证号码。前 6 位数字是 yymmdd,接下来的 6 位数字是随机数字。例如:730228072435。

当我输入像 730229 这样的日期时,它会显示计算年龄的错误。因为是闰年,所以算年龄应该是730228。

如何使用闰年支持验证 yymmdd 格式?提前致谢。

【问题讨论】:

  • 有一些闰年正则表达式,但它们非常复杂。使用 JavaScript 会更易读。这对你来说是一个选择吗?
  • 不,我必须使用表单输入。没事吧?
  • 那么您当前使用的pattern 不起作用?
  • 只能输入29日之前的日期。不能输入第 30 和第 31。比如000229可以,bur 000430、000531不行。
  • 我的答案中的模式是否解决了您的问题?如果不是,您能否尝试澄清您的问题?

标签: html forms date leap-year


【解决方案1】:

这种模式应该可以工作:

((0[48]|[2468][048]|[13579][26])0229|\d\d((0[13578]|1[02])([0-2]\d|3[01])|(0[469]|11)([0-2]\d|30)|02([01]\d|2[0-8])))\d{6}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-14
    • 2015-07-24
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多