主頁 > 知識庫 > 史上最詳細的js日期正則表達式分享

史上最詳細的js日期正則表達式分享

熱門標簽:惠安地圖標注 哈爾濱公司外呼系統(tǒng)代理 上海銷售電銷機器人軟件 山東外呼系統(tǒng)聯(lián)系方式 自己做的電銷機器人 淄博市張店區(qū)地圖標注 浙江營銷外呼系統(tǒng)有哪些 遼寧秒客來電話機器人 地圖標注店鋪地圖標注酒店

最簡單的正則 如 : /d{4}-/d{2}-/d{2}
但是實際情況卻不是那么簡單,,要考慮,有效性和閏年等問題.....

對于日期的有效范圍,不同的應用場景會有所不同。MSDN中定義的DateTime對象的有效范圍是:0001-01-01 00:00:00到9999-12-31 23:59:59。

UNIX時間戳的0按照ISO 8601規(guī)范為 :1970-01-01T00:00:00Z。

先考慮與年份無關的前三條規(guī)則,年份可統(tǒng)一寫作

(?!0000)[0-9]{4}

下面僅考慮月和日的正則

1. 包括平年在內的所有年份的月份都包含1-28日

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

2. 包括平年在內的所有年份除2月外都包含29和30日

(0[13-9]|1[0-2])-(29|30)

3. 包括平年在內的所有年份1、3、5、7、8、10、12月都包含31日

(0[13578]|1[02])-31)

合起來就是除閏年的2月29日外的其它所有日期

(?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)

接下來考慮閏年的實現(xiàn)

1 : 四年一閏
([0-9]{2}(0[48]|[2468][048]|[13579][26])

2 : 百年不閏,四百年再閏
(0[48]|[2468][048]|[13579][26])00

3 : 合起來就是所有閏年的2月29日
([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)

四條規(guī)則都已實現(xiàn),且互相間沒有影響,合起來就是所有符合DateTime范圍的日期的正則

^((?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$

考慮到這個正則表達式僅僅是用作驗證,所以捕獲組沒有意義,只會占用資源,影響匹配效率,所以可以使用非捕獲組來進行優(yōu)化。

^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
分類: JavaScript

 


  js 日期正則表達式支持月日驗證
這款js 日期正則表達式支持月日驗證,我們會一一舉例說明一下有關日期驗證表達式的函數(shù)實例了.

function isdate(str){
var result=str.match(/^(d{4})(-|/)(d{1,2})2(d{1,2})$/);
if(result==null) return false;
var d=new Date(result[1], result[3]-1, result[4]);
return (d.getFullYear()==result[1] d.getMonth()+1==result[3] d.getDate()==result[4]);
}

檢查是否為 YYYY-MM-DD || YYYY/MM/DD 的日期格式


面僅考慮月和日的正則

1. 包括平年在內的所有年份的月份都包含1-28日

(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])
2. 包括平年在內的所有年份除2月外都包含29和30日

(0[13-9]|1[0-2])-(29|30)
3. 包括平年在內的所有年份1、3、5、7、8、10、12月都包含31日

(0[13578]|1[02])-31)
合起來就是除閏年的2月29日外的其它所有日期

(?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)
function isdatetime(str)
{
var result=str.match(/^(d{4})(-|/)(d{1,2})2(d{1,2}) (d{1,2}):(d{1,2}):(d{1,2})$/);
if(result==null) return false;
var d= new Date(result[1], result[3]-1, result[4], result[5], result[6], result[7]);
return (d.getFullYear()==result[1](d.getMonth()+1)==result[3]d.getDate()==result[4]d.getHours()==result[5]d.getMinutes()==result[6]d.getSeconds()==result[7]);
}

// 判斷輸入是否是有效的長日期格式 - "YYYY-MM-DD HH:MM:SS" || "YYYY/MM/DD HH:MM:SS"


這是yyyy-mm-dd hh:mm:ss 的

/^(d{4})-(d{2})-(d{2}) (d{2}):(d{2}):(d{2})$/ ;

這是 yyyy-mm-ddde 的

/^(d{4})-(d{2})-(d{2})$/

您可能感興趣的文章:
  • JS正則表達式大全(整理詳細且實用)
  • javascript 手機號碼正則表達式驗證函數(shù)
  • js正則表達式基本語法(精粹)
  • js各種驗證文本框輸入格式(正則表達式)
  • Javascript校驗密碼復雜度的正則表達式
  • JavaScript 正則表達式 驗證整數(shù)、小數(shù)、實數(shù)、有效位小數(shù)最簡單
  • JavaScript 表單驗證正則表達式大全[推薦]
  • JS使用正則表達式驗證身份證號碼
  • JS正則表達式驗證數(shù)字(非常全)
  • JS正則表達式封裝與使用操作示例

標簽:宣城 無錫 泰州 西安 銅川 綿陽 長沙 重慶

巨人網絡通訊聲明:本文標題《史上最詳細的js日期正則表達式分享》,本文關鍵詞  史上,最詳,細的,日期,正則,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《史上最詳細的js日期正則表達式分享》相關的同類信息!
  • 本頁收集關于史上最詳細的js日期正則表達式分享的相關信息資訊供網民參考!
  • 推薦文章