我正在尝试在Javascript中创建一个与m/dd/yy-m/dd/yy
格式匹配的正则表达式(因此它应该看起来像4/11/12-5/12/13
)。我已经测试了我的第一部分,它似乎已经开始了,但是我似乎无法超越第一部分。这是我的内容(它适用于4/11/12
,但不适用于-5/12/12
:
var myDateRE = /^((0?[13578]|10|12)(-|\/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[01]?))(-|\/)((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1}))|(0?[2469]|11)(-|\/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[0]?))(-|\/)((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1})))[-]$/ ;
答案 0 :(得分:0)
这是为了找到你的子串
1?\d\/[01]\d\/\d{2}-1?\d\/[01]\d\/\d{2}/
您可以添加一些括号来确定每个值
/(1?\d)\/([01]\d)\/(\d{2})-(1?\d)\/([01]\d)\/(\d{2})/.exec('4/11/12-5/12/13')
输出
["4/11/12-5/12/13", "4", "11", "12", "5", "12", "13"]
答案 1 :(得分:0)
我的建议
var re = /^\d{1,2}\/\d{1,2}\/\d{1,2}-\d{1,2}\/\d{1,2}\/\d{1,2}$/
var str = "4/11/12-5/12/13"
function testDate(str) {
var parts = str.split("/");
var date = new Date(str);
return parts[0] == date.getMonth()+1 &&
parts[1] == date.getDate() &&
parts[2] == String(date.getFullYear()).substring(2);
}
if (str.match(re)) {
alert(testDate(str.split("-")[0]));
alert(testDate(str.split("-")[1]));
}