相关疑难解决方法(0)

在JavaScript中检测"无效日期"日期实例

我想告诉JS中有效和无效日期对象之间的区别,但无法弄清楚如何:

var d = new Date("foo");
console.log(d.toString()); // shows 'Invalid Date'
console.log(typeof d); // shows 'object'
console.log(d instanceof Date); // shows 'true'
Run Code Online (Sandbox Code Playgroud)

编写isValidDate函数的任何想法?

  • Ash建议Date.parse用于解析日期字符串,它提供了一种检查日期字符串是否有效的权威方法.
  • 如果可能的话,我希望我的API接受一个Date实例,并且能够检查/断言它是否有效.Borgar的解决方案就是这样做的,但我需要跨浏览器进行测试.我也想知道是否有更优雅的方式.
  • Ash让我觉得根本没有我的API接受Date实例,这最容易验证.
  • Borgar建议测试一个Date实例,然后测试它Date的时间值.如果日期无效,则时间值为NaN.我用ECMA-262检查了这个行为是标准的,这正是我正在寻找的.

javascript date

1381
推荐指数
24
解决办法
75万
查看次数

javascript regexp,验证日期问题

我有一些验证日期的代码如下:


function validateForm() {
var errFound = 0;       
//var patt_date = new RegExp("^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30)))))$");
var patt_date = new RegExp("^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))$");
if (patt_date.test(document.getElementById("datefrom").value) == false){errFound = errFound + 1;document.getElementById("datefrom").className = "error";}

if (errFound > 0)
    alert('Please correct red colored field!');
else
    return true;
return false;   
}
Run Code Online (Sandbox Code Playgroud)


以上代码应使用YYYY-MM-DD格式,但无法验证日期,例如"2009-02-29"

评论的代码应该工作(// var patt_date = new RegExp ...),它可以捕获"2009-02-29",
但是当我放入无效数据并尝试纠正它时它会破坏验证,它会一直抱怨某些东西在我纠正它们之后错误的表单值(特别是在具有多个输入的表单上)

也许有人可以修复当前的正则表达式?


编辑,我只想简单替换上面的regexp,意味着一个新的正则表达式模式而不是验证日期的全新方法
.作为参考,我只需从
http://www.regexlib.com/REDetails获取正则表达式模式. aspx?regexp_id = 694
http://www.regexlib.com/REDetails.aspx?regexp_id=933

测试了2009-02-29,第一个链接工作和第二个没有.再次问题是第二个正则表达式没有检测到值2009-02-29无效而第一个可以(但它毁了我的代码?所以它一定是有问题).

谢谢,
Dels

javascript regex validation

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

javascript ×2

date ×1

regex ×1

validation ×1