濮阳杆衣贸易有限公司

主頁 > 知識庫 > 史上最詳細(xì)的js日期正則表達(dá)式分享

史上最詳細(xì)的js日期正則表達(dá)式分享

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

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

對于日期的有效范圍,不同的應(yīng)用場景會有所不同。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ān)的前三條規(guī)則,年份可統(tǒng)一寫作

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

下面僅考慮月和日的正則

1. 包括平年在內(nèi)的所有年份的月份都包含1-28日

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

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

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

3. 包括平年在內(nèi)的所有年份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)

接下來考慮閏年的實(shí)現(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ī)則都已實(shí)現(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)$

考慮到這個正則表達(dá)式僅僅是用作驗證,所以捕獲組沒有意義,只會占用資源,影響匹配效率,所以可以使用非捕獲組來進(jìn)行優(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 日期正則表達(dá)式支持月日驗證
這款js 日期正則表達(dá)式支持月日驗證,我們會一一舉例說明一下有關(guān)日期驗證表達(dá)式的函數(shù)實(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. 包括平年在內(nèi)的所有年份的月份都包含1-28日

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

(0[13-9]|1[0-2])-(29|30)
3. 包括平年在內(nèi)的所有年份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正則表達(dá)式大全(整理詳細(xì)且實(shí)用)
  • javascript 手機(jī)號碼正則表達(dá)式驗證函數(shù)
  • js正則表達(dá)式基本語法(精粹)
  • js各種驗證文本框輸入格式(正則表達(dá)式)
  • Javascript校驗密碼復(fù)雜度的正則表達(dá)式
  • JavaScript 正則表達(dá)式 驗證整數(shù)、小數(shù)、實(shí)數(shù)、有效位小數(shù)最簡單
  • JavaScript 表單驗證正則表達(dá)式大全[推薦]
  • JS使用正則表達(dá)式驗證身份證號碼
  • JS正則表達(dá)式驗證數(shù)字(非常全)
  • JS正則表達(dá)式封裝與使用操作示例

標(biāo)簽:宣城 無錫 泰州 西安 銅川 綿陽 長沙 重慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《史上最詳細(xì)的js日期正則表達(dá)式分享》,本文關(guān)鍵詞  史上,最詳,細(xì)的,日期,正則,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《史上最詳細(xì)的js日期正則表達(dá)式分享》相關(guān)的同類信息!
  • 本頁收集關(guān)于史上最詳細(xì)的js日期正則表達(dá)式分享的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    土默特右旗| 曲沃县| 上思县| 崇州市| 大渡口区| 肥乡县| 故城县| 乌什县| 濮阳市| 兴山县| 文化| 丁青县| 冕宁县| 黄平县| 砀山县| 丘北县| 成都市| 浦东新区| 封丘县| 上林县| 遵义县| 深水埗区| 新巴尔虎左旗| 当阳市| 台前县| 天门市| 河南省| 万载县| 洞头县| 金湖县| 澎湖县| 黑水县| 合作市| 宣恩县| 大庆市| 龙泉市| 大方县| 河北省| 徐汇区| 延寿县| 繁昌县|