我尝试在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;
}
答案 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;
}
它可能需要更多验证,但这应该是一个很好的起点。比正则表达式解析几个数字(并且更易于阅读)的处理开销要少得多。