国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JavaScript > 正文

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

2020-03-22 17:31:26
字體:
來源:轉載
供稿:網友
最簡單的正則 如 : /d{4}-/d{2}-/d{2}
但是實際情況卻不是那么簡單,,要考慮,有效性和閏年等問題.....對于日期的有效范圍,不同的應用場景會有所不同。MSDN中定義的DateTime對象的有效范圍是:0001-01-01 00:00:00到9999-12-31 23:59:59。UNIX時間戳的0按照ISO 8601規范為 :1970-01-01T00:00:00Z。先考慮與年份無關的前三條規則,年份可統一寫作(?!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)接下來考慮閏年的實現1 : 四年一閏
([0-9]{2}(0[48]|[2468][048]|[13579][26])2 : 百年不閏,四百年再閏
(0[48]|[2468][048]|[13579][26])003 : 合起來就是所有閏年的2月29日
([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)四條規則都已實現,且互相間沒有影響,合起來就是所有符合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)$考慮到這個html' target='_blank'>正則表達式僅僅是用作驗證,所以捕獲組沒有意義,只會占用資源,影響匹配效率,所以可以使用非捕獲組來進行優化。^(?:(?!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 日期正則表達式支持月日驗證,我們會一一舉例說明一下有關日期驗證表達式的函數實例了.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})$/PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双峰县| 库尔勒市| 泰和县| 花莲市| 长泰县| 辉南县| 永兴县| 江阴市| 榆树市| 南康市| 富裕县| 黄石市| 澄江县| 石柱| 南岸区| 镇坪县| 曲水县| 岑巩县| 措勤县| 固始县| 政和县| 黎平县| 苏尼特右旗| 繁昌县| 黑龙江省| 台东县| 扎鲁特旗| 安达市| 蒙阴县| 聂拉木县| 新疆| 揭东县| 武川县| 阿拉善右旗| 石门县| 新密市| 若羌县| 枣庄市| 六盘水市| 永清县| 什邡市|