检查在不使用修剪的情况下是否存在空格



我有以下代码来检查日期是否有效。 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]) );
} 

如果date字符串中有空格,则可以使用 indexOf() 函数。

if(s.indexOf(' ') != -1)
{
    //space exists
}
您可以

测试任何空格,例如

 if( /s/g.test(s) )

它将测试任何空格。

您可能需要考虑使用正则表达式来测试字符串的有效性:

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]);
}

正则表达式一次性完成所有这些操作:

  • 检查是否有三个字段用斜杠分隔
  • 要求字段为数字
  • 允许日和月为 1 或 2 位数字,但一年需要 4
  • 位数字
  • 确保字符串中没有其他任何内容是合法的

请参阅 http://jsfiddle.net/alnitak/pk4wU/

相关内容

  • 没有找到相关文章

最新更新