我有以下代码检查日期是否有效。 http://jsfiddle.net/uzSU6/36/
如果日期部分,月份部分或年份部分中有空格,则该日期应视为无效。为此,目前我正在检查trim
操作之前和之后的字符串长度。它工作正常。但是有没有更好的方法来检查空格? (例如,使用===
运算符)
function isValidDate(s)
{
var bits = s.split('/');
//Javascript month starts at zero
var d = new Date(bits[2], bits[0] - 1, bits[1]);
if ( isNaN( Number(bits[2]) ) )
{
//Year is not valid number
return false;
}
if ( Number(bits[2]) < 1 )
{
//Year should be greater than zero
return false;
}
//If there is unwanted blank space, return false
if ( ( bits[2].length != $.trim(bits[2]).length ) ||
( bits[1].length != $.trim(bits[1]).length ) ||
( bits[0].length != $.trim(bits[0]).length ) )
{
return false;
}
//1. Check whether the year is a Number
//2. Check whether the date parts are eqaul to original date components
//3. Check whether d is valid
return d && ( (d.getMonth() + 1) == bits[0]) && (d.getDate() == Number(bits[1]) );
}
答案 0 :(得分:6)
如果date
字符串中有空格,则可以使用indexOf()函数。
if(s.indexOf(' ') != -1)
{
//space exists
}
答案 1 :(得分:1)
你可以测试任何像
这样的空格 if( /\s/g.test(s) )
它会测试任何空格。
答案 2 :(得分:0)
您可能需要考虑使用正则表达式来测试字符串的有效性:
function isValidDate(s) {
var re = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
var mdy = s.match(re);
if (!mdy) {
return false; // string syntax invalid;
}
var d = new Date(mdy[3], mdy[1] - 1, mdy[2]);
return (d.getFullYear() == mdy[3]) &&
(d.getMonth() == mdy[1] - 1) &&
(d.getDate() == mdy[2]);
}
正则表达式一次完成所有这些: