我对不同的正则表达式格式感到有点困惑。
以下方法导致错误。
function validateDate(str) {
var expr = /^((((0?[1-9]|[12]\d|3[01])[\/](0?[13578]|1[02])[\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\/](0?[13456789]|1[012])[\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\/]0?2[\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\/]0?2[\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
return validate(expr, str);
}
function validateTime(str) {
var expr = /^([0-1]?[0-9]|[2]?[0-3])\:([0-5][0-9])$/;
return validate(expr, str);
}
function validate(pattern, str) {
return str.match(pattern);
}
我从网上采用了以下正则表达式。我认为问题在于某些转义字符
这里有什么问题?
谢谢:)
答案 0 :(得分:3)
在validateDate
函数中,您将正则表达式对象分配给exp
变量,但在下一行中您使用的是expr
变量,该变量未定义。
您希望函数返回什么?现在他们正在返回一系列比赛。如果您希望它们返回true或false,则可能需要使用test
方法:
function validate(pattern, str) {
return pattern.test(str);
}