有没有办法在JavaScript中使用regex来验证多种格式的日期,例如:DD-MM-YYYY或DD.MM.YYYY或DD/MM/YYYY等?我需要所有这些在一个正则表达式,我不是很好用它.到目前为止,我已经想出了这个:var dateReg = /^\d{2}-\d{2}-\d{4}$/;DD-MM-YYYY.我只需要验证日期格式,而不是日期本身.
Bil*_*oon 33
您可以使用字符类([./-]),以便分隔符可以是任何已定义的字符
var dateReg = /^\d{2}[./-]\d{2}[./-]\d{4}$/
Run Code Online (Sandbox Code Playgroud)
或者更好的是,匹配第一个分隔符的字符类,然后将其捕获为一个组,([./-])并使用对捕获的组的引用\1来匹配第二个分隔符,这将确保两个分隔符相同:
var dateReg = /^\d{2}([./-])\d{2}\1\d{4}$/
"22-03-1981".match(dateReg) // matches
"22.03-1981".match(dateReg) // does not match
"22.03.1981".match(dateReg) // matches
Run Code Online (Sandbox Code Playgroud)
nic*_*bie 16
格式,天,月和年:
var regex = /^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$/;
建议的正则表达式不会验证日期,只验证模式.
所以99.99.9999将通过正则表达式.
您之后指定您只需要验证模式,但我仍然认为创建日期对象更有用
function isDate(str) {
var parms = str.split(/[\.\-\/]/);
var yyyy = parseInt(parms[2],10);
var mm = parseInt(parms[1],10);
var dd = parseInt(parms[0],10);
var date = new Date(yyyy,mm-1,dd,0,0,0,0);
return mm === (date.getMonth()+1) && dd === date.getDate() && yyyy === date.getFullYear();
}
var dates = [
"13-09-2011",
"13.09.2011",
"13/09/2011",
"08-08-1991",
"29/02/2011"
]
for (var i=0;i<dates.length;i++) {
console.log(dates[i]+':'+isDate(dates[i]));
} Run Code Online (Sandbox Code Playgroud)
小智 8
您可以使用OR(|)运算符来使用常规多个表达式.
function validateDate(date){
var regex=new RegExp("([0-9]{4}[-](0[1-9]|1[0-2])[-]([0-2]{1}[0-9]{1}|3[0-1]{1})|([0-2]{1}[0-9]{1}|3[0-1]{1})[-](0[1-9]|1[0-2])[-][0-9]{4})");
var dateOk=regex.test(date);
if(dateOk){
alert("Ok");
}else{
alert("not Ok");
}
}
Run Code Online (Sandbox Code Playgroud)
以上功能可以验证YYYY-MM-DD,DD-MM-YYYY日期格式.您可以简单地扩展正则表达式以验证任何日期格式.假设您要验证YYYY/MM/DD,只需将"[ - ]"替换为"[ - | /]".此表达式可以将日期验证为31个月到12个月.但是30天的闰年和月份未经验证.
使用括号/^\d{2}[.-/]\d{2}[.-/]\d{4}$/
http://download.oracle.com/javase/tutorial/essential/regex/char_classes.html
| 归档时间: |
|
| 查看次数: |
101816 次 |
| 最近记录: |