Mic*_* BW 0 javascript regex jquery
我发现了一个非常有用的正则表达式,用于测试正则表达式示例站点中日期字段的格式和内容
但是当我输入2000年以前的日期时我得到了验证,因为这是一个输入出生日期的字段,你可以看出它为什么会出问题.我确信这是一个简单的修复,但正则表达式威胁我.
$('#txtDOB').blur(function() {
//$('span.error-keyup-5').remove();
var inputVal = $(this).val();
var dateReg = /^[0,1]?\d{1}\/(([0-2]?\d{1})|([3][0,1]{1}))\/(([1]{1}[9]{1}[9]{1}\d{1})|([2-9]{1}\d{3}))$/;
if(!dateReg.test(inputVal)) {
alert('invalid date format: ' + inputVal);
}
Run Code Online (Sandbox Code Playgroud)
我没有和这个解决方案结婚,所以如果你能建议一个更好的方法,请评论.
如果字符串匹配,你觉得会是个不错的日期一种或多种格式的测试取而代之的,我会建议,而不是询问的JavaScript 它认为这是一个有效的日期:
function isValidDate(str){
return !isNaN(new Date(str));
}
Run Code Online (Sandbox Code Playgroud)
这假设您将接受用户以各种格式提供的内容(例如,可怕的美国MM/DD/YYYY或更健全的ISO8601 YYYY-MM-DD).如果你有一个特定的格式,你只会接受,然后根据它解析你的字符串,拉出年/月/日,然后问JavaScript这是否是一个有效的日期:
function isValidDate(year, month, date) {
var d = new Date(year*=1, month-=1, date*=1, 12); // noon to skip DST issues
return d.getFullYear()==year && d.getMonth()==month; // wrong date->wrong month
}
Run Code Online (Sandbox Code Playgroud)
您需要检查年/月/日全部是否匹配,因为new Date(2011,11,32)已被接受并被解释为2012-1-1.
另请参阅:确保日期有效的Javascript方法
| 归档时间: |
|
| 查看次数: |
1191 次 |
| 最近记录: |