我在使用正则表达式和 jquery 格式化日期输入时遇到了问题。我设法将范围缩小到这个测试代码:
function formatDate() {
var regEx = /^(0[1-9]|1[012])[\/](0[1-9]|[12][0-9]|3[01])[\/](19|20)\d\d$/;
var test = "02/20/1901";
var obj = $('.format');
var febRexEx = /^(02)[\/](3[01])[\/](19|20)\d\d$/;
if (test == regEx) {
alert("Matches Regular Expression 1.");
if (test == febRexEx) {
alert("Bad date!\nMatches Regular Expression 2!");
} else {
alert("Not a bad date.\nDoesn't match Regular Expression 2.");
}
} else {
alert("Bad date!\nDoesn't match Regular Expression 1!");
}
}
我认为测试日期应该与第一个正则表达式匹配,但代码告诉我事实并非如此 - 我得到错误的日期!与正则表达式 1 不匹配!
警报消息。为什么会发生这种情况?如何解决?
最佳答案
您不能直接将字符串与正则表达式进行比较,请使用类似 match
的内容
function formatDate() {
var regEx = /^(0[1-9]|1[012])[\/](0[1-9]|[12][0-9]|3[01])[\/](19|20)\d\d$/;
var test = "02/20/1901";
var obj = $('.format');
var febRexEx = /^(02)[\/](3[01])[\/](19|20)\d\d$/;
if (test.match(regEx)) {
alert("Matches Regular Expression 1.");
if (test.match(febRexEx)) {
alert("Bad date!\nMatches Regular Expression 2!");
} else {
alert("Not a bad date.\nDoesn't match Regular Expression 2.");
}
} else {
alert("Bad date!\nDoesn't match Regular Expression 1!");
}
}
关于jquery - 尽管格式正确,但日期与 RegExp 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17791082/