Javascript日期正则表达式DD / MM / YYYY

Javascript日期正则表达式DD / MM / YYYY

我知道有很多正则表达式的线程,我需要一个我无法在任何地方找到的特定模式

此正则表达式以YYYY-MM-DD格式验证

/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/

我需要模式为DD / MM / YYYY(第一天因为它是西班牙语而且只有“/”,“ - ”不应该被允许)

我搜索了几个正则表达式库,我认为这个应该有效...但由于我不熟悉正则表达式,我不确定它是否有类似的验证

(0[1-9]|[12][0-9]|3[01])[ \.-](0[1-9]|1[012])[ \.-](19|20|)\d\d

我也不知道为了逃避斜线,我试图“看到”字符串中的逻辑,但这就像是为我“看”矩阵代码。我将正则表达式字符串放在选项.js中

[...]  },"date": {
                    "regex": (0[1-9]|[12][0-9]|3[01])[ \.-](0[1-9]|1[012])[ \.-](19|20|)\d\d,
                    "alertText": "Alert text AAAA-MM-DD"
                },"other type..."[...]

那么,如果正则表达式没问题,我该如何逃避呢?如果不是,那么正确的正则表达式是什么?我该如何逃避呢?:P

非常感谢


白衣染霜花
浏览 1025回答 3
3回答

慕田峪9158850

正则表达式适用于匹配常规格式,但我认为您应该将解析移动到Date类,例如:function parseDate(str) {   var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);   return (m) ? new Date(m[3], m[2]-1, m[1]) : null;}现在您可以使用此功能检查有效日期; 但是,如果您需要实际验证而不进行滚动(例如“31/2/2010”不会自动滚动到“2010年3月3日”),那么您还有另一个问题。[编辑]如果您还想在不滚动的情况下进行验证,则可以添加一个检查以与原始字符串进行比较,以确保它是相同的日期:function parseDate(str) {   var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/)     , d = (m) ? new Date(m[3], m[2]-1, m[1]) : null     , nonRolling = (d&&(str==[d.getDate(),d.getMonth()+1,d.getFullYear()].join('/')));   return (nonRolling) ? d : null;}[Edit2]如果你想与零填充日期匹配(例如“08/08/2013”),你可以这样做:function parseDate(str) {   function pad(x){return (((''+x).length==2) ? '' : '0') + x; }   var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/)     , d = (m) ? new Date(m[3], m[2]-1, m[1]) : null     , matchesPadded = (d&&(str==[pad(d.getDate()),pad(d.getMonth()+1),d.getFullYear()].join('/')))     , matchesNonPadded = (d&&(str==[d.getDate(),d.getMonth()+1,d.getFullYear()].join('/')));   return (matchesPadded || matchesNonPadded) ? d : null;}但是,对于不一致的填充日期(例如“8/08/2013”),它仍然会失败。
打开App,查看更多内容
随时随地看视频慕课网APP