我正在尝试构建一个正则表达式,用于检查日期是否符合以下格式(11-2-07、1-25-2007或01/25/2007)。我的正则表达式如下:
/^([\d{2}\d{1}])([\-\/])([\d{2}\d{1}])(\-\/)([\d{2}\d{4}])$/
当我以所需格式输入日期时,test()方法实际上返回false。您能帮我找到错误吗?
我正在尝试构建一个正则表达式,用于检查日期是否符合以下格式(11-2-07、1-25-2007或01/25/2007)。我的正则表达式如下:
/^([\d{2}\d{1}])([\-\/])([\d{2}\d{1}])(\-\/)([\d{2}\d{4}])$/
当我以所需格式输入日期时,test()方法实际上返回false。您能帮我找到错误吗?
var re = /^([0123]?[\d])([\-\/])([0123]?[\d])([\-\/])((19|20)?\d\d)$/;
0
、1
、2
或3
开始。如果您知道确切的日期格式,可以从月份组中删除3
,或使用(0?[1-9]|1[012])
作为月份组和(0?[1-9]|[12][0-9]|3[01])
作为日期组。19
或20
开头的年份。var re = /^([0123]?[\d])([\-\/])([0123]?[\d])([\-\/])((19|20)?\d\d)$/;
console.log('01-02-1999', re.test('01-02-1999'));
console.log('01/02/1999', re.test('01/02/1999'));
console.log('41-02-1999', re.test('41-02-1999'));
console.log('01/42/1999', re.test('01/42/1999'));
You can select 1 or 2 digit occurrences with \d{1,2}
.
There are missing square brackets in the last hypen / forward slash group.
And the last group should be (\d{2}|\d{4})
.
No need to escape the forward slash inside the character classes.
/^(\d{1,2})([\-/])(\d{1,2})([\-/])(\d{2}|\d{4})$/
[\d{2}\d{1}]
和[\d{2}\d{4}]
只匹配一个字符,您是否想使用(a|b)
?此外,您提供的第一个有效日期示例没有足够的信息来确定日期和月份的顺序。 - Paul S.