首页 > 解决方案 > Reg Exp 格式为 MM/YY 的日期

问题描述

我有 MM/YY 格式的日期掩码。必须有month >= then current,并且year >= then current year。

我在这里有正则表达式模式:

<input id="expiration" type="tel" placeholder="MM/YY" class="masked" pattern="(1[0-2]|0[1-9])\/(1[8-9]|2\d)" data-valid-example="12/18" onchange="onChangeInput(event)"/>

这种格式似乎还可以,但我仍然可以写不到 18 岁的一年。

需要你一点帮助,堆栈溢出。

标签: javascriptregexdate

解决方案


该模式看起来不错,但是正如使用输入类型 tel 所指出的那样,它可能不是一个好主意,因为它在语义上不一致。

您可以尝试使用脚本而不是依赖浏览器验证,因为支持不完整。像下面这样的东西可能适合。

function validateInput(evt) {
  var re = new RegExp(this.pattern);
  var s = this.value;
  // Show whether value is valid or not when input is full
  document.querySelector('#s0').textContent = s.length < 5 || re.test(s)? '' : 'Invalid';
}

window.onload = function(){
  document.querySelector('#i0').addEventListener('input',validateInput, false);
};
<input id="i0" type="text" placeholder="MM/YY" pattern="(1[0-2]|0[1-9])\/(1[8-9]|2\d)" maxlength="5"><br>
<span id="s0"></span>


推荐阅读