我需要在用户密钥上验证日期 yyyy-mm-dd 。
我目前正在使用此正则表达式验证 yyyy-mm
^\d{0,4}$|^\d{4}[-]$|^\d{4}[-](0?[0-9]|1[012])$
但我需要验证其他部分日期。任何人都可以帮助我吗?
答案 0 :(得分:2)
这个正则表达式有点复杂,但检查整个格里高利规则。
regExp = "(((\d{2}(([13579][26])|([2468][480])|(0[48])))|(([13579][26])|([02468][480]))00)-02-29)|(\d{4}-((?:(0[13578]|1[02])-([0-2]\d|3[0-1]))|(?:(0[469]|11)-([0-2]\d|30))|(?:02-([0-1]\d|2[0-8]))))"
答案 1 :(得分:1)
稍微修改了当前的正则表达式并添加了dd
部分,使其成为
^\d{0,4}$|^\d{4}-0?$|^\d{4}-(?:0?[1-9]|1[012])(?:-(?:0?[1-9]?|[12]\d|3[01])?)?$
(?:
打开non capture group以进行更改0?[1-9]?
可选1-9,前面有0或零[12]\d
天10-29 3[01]
第30天和第31天打字时只是松散的检查,你可以缩短它。
它并没有真正验证日期(闰年/ 28-31天)。在键入/提交see this answer of @PhiLho时验证完整日期并重新排列以匹配YYYY-MM-DD
function isValidDate(date)
{
var matches = /^(\d{4})-(\d{1,2})-(\d{1,2})$/.exec(date);
if (matches == null) return false;
var y = matches[1];
var m = matches[2] - 1;
var d = matches[3];
var composedDate = new Date(y, m, d);
return composedDate.getDate() == d &&
composedDate.getMonth() == m &&
composedDate.getFullYear() == y;
}

<input type="text" id="test" value="2016-03-16">
<button onclick="alert(
isValidDate(getElementById('test').value)
);">check date</button>
&#13;
答案 2 :(得分:0)
var regExp = /^(\d{4})-(\d{2})-(\d{2})$/
regExp.test(value);