我刚刚在javaScript中编写了这个正则表达式,但它似乎不起作用,这是我的功能:
function isGoodDate(dt){
var reGoodDate = new RegExp("/^((0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2})*$/");
return reGoodDate.test(dt);
}
这就是我在表单验证中调用它的方式
if(!isGoodDate(userInput[1].value)){
alert("date not in correct format of MM/dd/YYYY");
return false;
}
现在我希望它返回MM / DD / YYYY但是如果我在其中放入有效日期会引发警报?任何人的想法?
答案 0 :(得分:12)
试试这个:
function isGoodDate(dt){
var reGoodDate = /^((0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2})*$/;
return reGoodDate.test(dt);
}
您可以使用以下命令声明正则表达式:
new RegExp("^((0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2})*$")
或者:
/^((0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2})*$/
注意/
答案 1 :(得分:3)
也许是因为你宣布 isGoodDate()
函数,然后你正在调用isCorrectDate()
函数?
尝试:
function isGoodDate(dt){
var reGoodDate = /^(?:(0[1-9]|1[012])[\/.](0[1-9]|[12][0-9]|3[01])[\/.](19|20)[0-9]{2})$/;
return reGoodDate.test(dt);
}
像魅力一样工作,test it here。
请注意,此正则表达式将验证从01/01/1900
到31/12/2099
的日期。如果要更改年份边界,请在最后一个正则表达式块上更改这些数字(19|20)
。例如。如果您希望年度范围从01/01/1800
到31/12/2099
,只需将其更改为(18|20)
。
答案 2 :(得分:2)
我认为你不需要正则表达式。试试这个:
function isGoodDate(dt){
var dts = dt.split('/').reverse()
,dateTest = new Date(dts.join('/'));
return isNaN(dateTest) ? false : true;
}
//explained
var dts = dt.split('/').reverse()
// ^ split input and reverse the result
// ('01/11/2010' becomes [2010,11,01]
// this way you can make a 'universal'
// datestring out of it
,dateTest = new Date(dts.join('/'));
// ^ try converting to a date from the
// array just produced, joined by '/'
return isNaN(dateTest) ? false : true;
// ^ if the date is invalid, it returns NaN
// so, if that's the case, return false
答案 3 :(得分:2)
我同意@KooiInc,但仅仅测试NaN
是不够的function isGoodDate(dt){
var dts = dt.split('/').reverse()
,dateTest = new Date(dts.join('/'));
return !isNaN(dateTest) &&
dateTest.getFullYear()===parseInt(dts[0],10) &&
dateTest.getMonth()===(parseInt(dts[1],10)-1) &&
dateTest.getDate()===parseInt(dts[2],10)
}
将处理29/2/2001和31/4/2011
这个脚本要处理美国日期吗
function isGoodDate(dt){
var dts = dt.split('/')
,dateTest = new Date(dt);
return !isNaN(dateTest) &&
dateTest.getFullYear()===parseInt(dts[2],10) &&
dateTest.getMonth()===(parseInt(dts[0],10)-1) &&
dateTest.getDate()===parseInt(dts[1],10)
}
答案 4 :(得分:1)
在你的代码中添加它,它在这里工作得很好。 点击此处http://jsfiddle.net/Shef/5Sfq6/
function isGoodDate(dt){
var reGoodDate = /^(?:(0[1-9]|1[012])[\/.](0[1-9]|[12][0-9]|3[01])[\/.](19|20)[0-9]{2})$/;
return reGoodDate.test(dt);
}
答案 5 :(得分:0)
验证(DD-MM-YYYY)格式:)
nano .bashrc
export PATH=/home/biraj/kafka_2.12-2.2.1/bin:$PATH
答案 6 :(得分:0)
尝试下面的代码,该代码接受以下日期格式:
MM-DD-YYYY,MM-DD-YY,DD-MM-YYYY,DD-MM-YY,MM / DD / YYYY,MM / DD / YY, DD / MM / YYYY,DD / MM / YY,MM \ DD \ YYYY,MM \ DD \ YY,DD \ MM \ YYYY,DD \ MM \ YY
function isGoodDate(dt) {
var reGoodDate = /(?:((0\d|[12]\d|3[01])|(0\d|1[012]))[\-|\\|\/]((0\d|1[012])|(0\d|[12]\d|3[01]))[\-|\\|\/](((19|20)\d{2})|\d\d))/;
return reGoodDate.test(dt);
}
答案 7 :(得分:-1)
(/^(0[1-9]|1[012])- /.- /.\d\d$/) 您可以使用它肯定会起作用,这是用于 MM/DD/YYYY