濮阳杆衣贸易有限公司

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

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

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

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

對(duì)于日期的有效范圍,不同的應(yīng)用場(chǎng)景會(huì)有所不同。MSDN中定義的DateTime對(duì)象的有效范圍是:0001-01-01 00:00:00到9999-12-31 23:59:59。

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

先考慮與年份無(wú)關(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)

合起來(lái)就是除閏年的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)

接下來(lái)考慮閏年的實(shí)現(xiàn)

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

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

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

四條規(guī)則都已實(shí)現(xiàn),且互相間沒(méi)有影響,合起來(lái)就是所有符合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)$

考慮到這個(gè)正則表達(dá)式僅僅是用作驗(yàn)證,所以捕獲組沒(méi)有意義,只會(huì)占用資源,影響匹配效率,所以可以使用非捕獲組來(lái)進(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á)式支持月日驗(yàn)證
這款js 日期正則表達(dá)式支持月日驗(yàn)證,我們會(huì)一一舉例說(shuō)明一下有關(guān)日期驗(yà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)
合起來(lái)就是除閏年的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]);
}

// 判斷輸入是否是有效的長(zhǎng)日期格式 - "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ī)號(hào)碼正則表達(dá)式驗(yàn)證函數(shù)
  • js正則表達(dá)式基本語(yǔ)法(精粹)
  • js各種驗(yàn)證文本框輸入格式(正則表達(dá)式)
  • Javascript校驗(yàn)密碼復(fù)雜度的正則表達(dá)式
  • JavaScript 正則表達(dá)式 驗(yàn)證整數(shù)、小數(shù)、實(shí)數(shù)、有效位小數(shù)最簡(jiǎn)單
  • JavaScript 表單驗(yàn)證正則表達(dá)式大全[推薦]
  • JS使用正則表達(dá)式驗(yàn)證身份證號(hào)碼
  • JS正則表達(dá)式驗(yàn)證數(shù)字(非常全)
  • JS正則表達(dá)式封裝與使用操作示例

標(biāo)簽:宣城 無(wú)錫 泰州 西安 銅川 綿陽(yáng) 長(zhǎng)沙 重慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《史上最詳細(xì)的js日期正則表達(dá)式分享》,本文關(guān)鍵詞  史上,最詳,細(xì)的,日期,正則,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《史上最詳細(xì)的js日期正則表達(dá)式分享》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于史上最詳細(xì)的js日期正則表達(dá)式分享的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    建昌县| 得荣县| 永城市| 民勤县| 城市| 桦南县| 盐津县| 楚雄市| 车险| 嵩明县| 十堰市| 怀宁县| 青海省| 成武县| 阿荣旗| 丰顺县| 云林县| 即墨市| 合作市| 邻水| 霍山县| 长寿区| 金阳县| 台北市| 连南| 张北县| 颍上县| 星子县| 日照市| 图们市| 慈溪市| 木兰县| 乃东县| 浦城县| 洪洞县| 乐昌市| 九台市| 揭阳市| 尼木县| 抚顺县| 石嘴山市|