读书人

这个RegExp的有关问题关于验证输入的

发布时间: 2012-09-27 11:11:17 作者: rapoo

这个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]))$/ 

读书人网 >JavaScript

热点推荐