正则表达式匹配字符串中的日期

时间:2011-07-04 19:07:14

标签: javascript regex

我尝试在2000年之后和之后只允许数字01(1)到53).... 所以我创建一个正则表达式,但似乎没有工作

在此网页上:http://www.regular-expressions.info/javascriptexample.html 我尝试过它并且效果很好......但是当我在网页上测试时

10 / 2010,23 / 2000

function isValidDate(value, format){
     var isValid = true;

     try{
         var inputVal = $(this).val();
         var dateWWYYYYRegex = '^(0[1-9]|[1234][0-9]|5[0-3])[-/.](20)\d\d$';

         var reg=new RegExp(dateWWYYYYRegex);

         if(!reg.test(value)){
            isValid = false;
            alert("Invalid");
         }

     }
     catch(error){
         isValid = false;
    }

    return isValid;
}

2 个答案:

答案 0 :(得分:3)

如果要从字符串中创建正则表达式,则必须转义反斜杠。我只是使用正则表达式语法,因为它仍然是一个常量:

var reg = /^(0[1-9]|[1234][0-9]|5[0-3])[-/.](20)\d\d$/;

然而,正则表达式并没有任何意义。目前尚不清楚它应该是什么,因为你的描述也令人困惑。

编辑 - 现在好了,我知道你正在做什么,正则表达式应该有效,我想。

答案 1 :(得分:0)

为什么要使用正则表达式执行此任务?我认为这是完成这项任务的错误工具

只需用斜杠分隔符拆分字符串,然后使用数字函数检查值是否在您想要的范围内。

function isValidWeekOfYear(value){
   var bits = value.split('/');
   if(parseInt(bits[1]) < 2000) { return false; } /* probably also want to do a maximum value here? */
   if(parseInt(bits[0]) < 1 || parseInt(bits[0]) > 53) { return false; }
   return true;
}

它可能需要更多验证,但这应该是一个很好的起点。比正则表达式解析几个数字(并且更易于阅读)的处理开销要少得多。