javascript正则表达式为MM / YYYY和YYYY

时间:2013-08-13 20:33:00

标签: javascript regex

我有两个地方需要在javascript中使用regex  1验证我有MM/YYYY

var regEx = new RegExp(/^(0?[1-9]|1[0-2])\/(\d{4})$/);

另一种是验证YYYY

我需要同时验证年份是在1900年到当年之间

2 个答案:

答案 0 :(得分:0)

这将适用于下一个千年:

var y = (new Date().getYear()-100).toString(); // "13"
var strReg = '^((0?[1-9]|1[0-2])\\/)?(19\\d{2}|2' + (y.length-2?'':'0');
for(var i=0;i<y.length;i++) {
    strReg+='[0-'+y[i]+']';
}
strReg+=')$'; // "^((0?[1-9]|1[0-2])\/)?(19\d{2}|20[0-1][0-3])$"
console.log(new RegExp(strReg).test('2013')); // true
console.log(new RegExp(strReg).test('2016')); // false
console.log(new RegExp(strReg).test('01/2013')); // true
console.log(new RegExp(strReg).test('13/2013')); // false

如果您想使用本世纪和上个世纪的有效日期(现在相对于1900年代),您可以使用此代码替换正则表达式中的19 ... '...?(' + (y.length-2?parseInt(y[0])+19:'19') + '\\d{2}|...'

答案 1 :(得分:0)

为mm创建一个正则表达式,它应该像

/0([1-9])|1([1-2])/ 

对yyyy来说应该是

/(19\d{2})|(200\d)|(201[0-3])/

你可以制作一个正则表达式来检查mm / yyyy

/0([1-9])|1([1-2])\/(19\d{2})|(200\d)|(201[0-3])/ 

然后使用循环验证您要检查的年份和月份