这个RegExp的问题,关于验证输入的“日期、月份、年份”格式是否正确的疑惑!
var cc1_regexp = /\^0?[1-9]|1[0-9]|2[0-9]|3[0-1]\$/;
var invalid = cc1_regexp.test(document.loginform.cc1.value);
if (!invalid) {
errorMessage(document.loginform.cc1, "invalid");
return false;
}
就拿日期做例子,这个问题何在?现在出来什么东西都是INVALID。
------解决方案--------------------/0?[1-9]|[1-2][0-9]|[3][0-1]/
/\^0?[1-9]|1[0-9]|2[0-9]|3[0-1]\$/;
\ 这个是转义字符. \^就代表^,而不是以0开头了.同理\$ 我写的你试试 应该可以的
------解决方案--------------------cc1_regexp = /^([0]?[1-9])$|^([1-2][0-9])$|^([3][0-1])$/;
每一个分块都要加上匹配开始结束符吧,否则会匹配任意长度的,试试这个看~
------解决方案--------------------/0[1-9]|[12]\d|3[0-1]/ 这个应该是可以的 我试过了
var valid = cc3_regexp.exec(cc1); 改成 var valid = cc3_regexp.test(cc1);同时确保cc1是string这样就可以匹配0[1-9] 如果是数字前导0会去掉的 匹配就错误了
------解决方案--------------------崩溃...
JScript code
//匹配yyyy-MM-dd(限制年必须为4位数,即必须是1000年之后,9999年之前的日期)
/^[1,2]\d{3}-((0?[1-9])|(1[012]))-((0?[1-9])|([12]\d)|(3[01]))$/
//匹配年(范围0-9999)
/^\d{1,4}$/
//匹配月
/^(?:(0?[1-9])|(1[012]))$/
//匹配日
/^(?:(0?[1-9])|([12]\d)|(3[01]))$/