日期校驗(yàn)?/?時(shí)間校驗(yàn)正則表達(dá)式深入解析(超實(shí)用!)
0 結(jié)論
以下為常用的日期格式校驗(yàn)表達(dá)式
0.1 日期格式校驗(yàn)
以下日期校驗(yàn)可滿足“四年一閏,百年不閏,四百年再閏”
yyyyMMdd
^(?:(?!0000)[0-9]{4}(?:(?:0[13578]|1[02])(?:0[1-9]|[12][0-9]|3[01])|(?:0[469]|11)(?:0[1-9]|[12][0-9]|30)|02(?:0[1-9]|1[0-9]|2[0-8]))|(?:(((\d{2})(0[48]|[2468][048]|[13579][26])|(([02468][048])|([13579][26]))00))0229))$
yyyy-MM-dd
^(?:(?!0000)[0-9]{4}\-(?:(?:0[13578]|1[02])(?:\-0[1-9]|\-[12][0-9]|\-3[01])|(?:0[469]|11)(?:\-0[1-9]|\-[12][0-9]|\-30)|02(?:\-0[1-9]|\-1[0-9]|\-2[0-8]))|(?:(((\d{2})(0[48]|[2468][048]|[13579][26])|(([02468][048])|([13579][26]))00))\-02\-29))$
0.2 時(shí)間格式校驗(yàn)
hhmmss
12 小時(shí)制,范圍為 000000 - 115959
^(?!120000)(?:0[0-9]|1[12])(?:[0-5][0-9]){2}$
24 小時(shí)制,范圍為 000000 - 235959
^(?!240000)(?:[01][0-9]|2[1-4])(?:[0-5][0-9]){2}$
hh:mm:ss
12 小時(shí)制,范圍為 00:00:00 - 11:59:59
^(?!12\:00\:00)(?:0[0-9]|1[12])(?:\:[0-5][0-9]){2}$
24 小時(shí)制,范圍為 00:00:00 - 23:59:59
^(?!24\:00\:00)(?:[01][0-9]|2[1-4])(?:\:[0-5][0-9]){2}$
0.3 使用方式
String uncheckedStr = "2023-12-12"; final String REGEX_PATTERN = "^(?:(?!0000)[0-9]{4}\-(?:(?:0[13578]|1[02])(?:\-0[1-9]|\-[12][0-9]|\-3[01])|(?:0[469]|11)(?:\-0[1-9]|\-[12][0-9]|\-30)|02(?:\-0[1-9]|\-1[0-9]|\-2[0-8]))|(?:(((\d{2})(0[48]|[2468][048]|[13579][26])|(([02468][048])|([13579][26]))00))\-02\-29))$"; if (!Pattern.matches(REGEX_PATTERN, uncheckedStr)) { throw new BusinessException(ErrorCodeEnum.INVALID_TIME_PATTERN); }
1 日期校驗(yàn)正則表達(dá)式解析
以 yyyyMMdd
為例解析日期校驗(yàn)正則表達(dá)式組裝過程
- 匹配前四位年份,匹配范圍為
0001-9999
,使用(?!)
排除0000
,獲得yyyy
部分的校驗(yàn)正則表達(dá)式
(?!0000)[0-9]{4}
- 由于月份與日期關(guān)聯(lián)存在多種可能,因此采用模式匹配
1. 31 天的月份 01 03 05 07 08 10 12 (?:0[13578]|1[02]) 匹配月份 (?:0[1-9]|[12][0-9]|3[01]) 匹配日期 01 - 31 2. 30 天的月份 04 06 09 11 (?:0[469]|11) 匹配月份 (?:0[1-9]|[12][0-9]|30) 匹配日期 01 - 30 3. 02 月存在閏月的問題,且條件較為復(fù)雜,因此先匹配 01 - 28 的日期范圍 02 匹配月份 (?:0[1-9]|1[0-9]|2[0-8]) 匹配日期 01 - 28
- 使用
|
組裝匹配模式,多個(gè)模式使用(?:MODELA|MODELB|MODELC)
的方式進(jìn)行組合,此處組合匹配模式后獲得mmdd
部分的校驗(yàn)正則表達(dá)式
匹配 MMdd 的表達(dá)式 (?:(?:0[13578]|1[02])(?:0[1-9]|[12][0-9]|3[01])|(?:0[469]|11)(?:0[1-9]|[12][0-9]|30)|02(?:0[1-9]|1[0-9]|2[0-8])) |-- 31 天的月份日期 --|-- 30 天的月份日期 --|-- 28 天的月份日期 --|
- 拼接第 1 步和第 3 步的匹配模式以組裝基本的
yyyyMMdd
模式,該模式下不考慮閏年,因此將第 2 步的二月的日期匹配范圍改到了29
,該模式無法辨認(rèn)1900-02-29
的非閏年情形
不考慮閏年的簡(jiǎn)易模式(二月的日期匹配范圍改到了29,以下模式能正常使用) ^(?!0000)[0-9]{4}(?:(?:0[13578]|1[02])(?:0[1-9]|[12][0-9]|3[01])|(?:0[469]|11)(?:0[1-9]|[12][0-9]|30)|02(?:0[1-9]|1[0-9]|2[0-9]))$
- 進(jìn)一步處理閏年年份
1. 非百年的年份處理較為簡(jiǎn)單,枚舉 4 的倍數(shù)且不為 100 的倍數(shù)的年份 ((\d{2})(0[48]|[2468][048]|[13579][26]) 2. 百年年份保留 400 的倍數(shù) (([02468][048])|([13579][26]))00)
- 拼接模式以匹配閏年日期
yyyy0229
(((\d{2})(0[48]|[2468][048]|[13579][26])|(([02468][048])|([13579][26]))00))0229 |-- 非百年 --|-- 百年(保留400年) --|
- 結(jié)合第 3 步和第 6 步的結(jié)果組裝最終的匹配模式,該模式可以滿足 四年一閏,百年不閏,四百年再閏 的需求
^(?:(?!0000)[0-9]{4}(?:(?:0[13578]|1[02])(?:0[1-9]|[12][0-9]|3[01])|(?:0[469]|11)(?:0[1-9]|[12][0-9]|30)|02(?:0[1-9]|1[0-9]|2[0-8]))|(?:(((\d{2})(0[48]|[2468][048]|[13579][26])|(([02468][048])|([13579][26]))00))0229))$
附:下面是常用的一些時(shí)間日期格式驗(yàn)證Javascript代碼
// JavaScript Document var success = 'success'; //校驗(yàn)成功 var failure = 'failure'; //校驗(yàn)失敗 var dateStrNull = 'dateStrNull'; //日期字符串為空 var formatError = "formatError"; //不符合格式 var lengthLt8 = "lengthLt8"; //長(zhǎng)度小于8 var monthLT1 = 'monthLT1'; //月份不能小于1 var monthGT12 = 'monthGT12'; //月份大于12 var dayGT28 = 'dayGT28'; //日期大于28 var dayGT29 = 'dayGT29'; //日期大于29 var dayGT30 = 'dayGT30'; //日期大于30 var dayGT31 = 'dayGT31'; //日期大于31 var dayLT1 = 'dayLT1'; //日期小于1 var hour24System = '24'; //采用24小時(shí)制 var hour12System = '12'; //采用12小時(shí)制 var hourGT23 = 'hourGT23'; //小時(shí)大于23 var hourGT11 = 'hourGT11'; //小時(shí)大于11 var minuteGT59 = 'minuteGT59'; //分鐘大于59 var secondGT59 = 'secondGT59'; //秒鐘大于59 var dateCompare = 'date'; //比較年月日 var dateTimeCompare = 'dateTime'; //比較年月日或者時(shí)分秒或者所有 var timeCompare = 'time'; //比較年時(shí)分秒 var dateTimeGTNow = 'dateTimeGTNow'; //大于當(dāng)前年月日或者時(shí)分秒或者所有 var dateTimeLTNow = 'dateTimeLTNow'; //小于當(dāng)前年月日或者時(shí)分秒或者所有 var equality = 'equality'; //時(shí)間相等 //時(shí)間格式的正則表達(dá)式 var YYYYMMDDReg = /[\d]{4}[\/-]{1}[\d]{1,2}[\/-]{1}[\d]{1,2}/g; var YYYYMMDDHHmmReg = /[\d]{4}[\/-]{1}[\d]{1,2}[\/-]{1}[\d]{1,2}\s[\d]{1,2}[:][\d]{1,2}/g; var YYYYMMDDHHmmssReg = /[\d]{4}[\/-]{1}[\d]{1,2}[\/-]{1}[\d]{1,2}\s[\d]{1,2}[:][\d]{1,2}[:][\d]{1,2}/g; var HHmmssReg = /[\d]{1,2}[:][\d]{1,2}[:][\d]{1,2}/g; var HHmmReg = /[\d]{1,2}[:][\d]{1,2}/g; /** * 校驗(yàn)是否為YYYY-MM-DD 日期格式 * @param dateStr 時(shí)間字符串 * @returns */ function validateYYYYMMDD(dateStr){ //如果日期字符串為空 if(strIsNull(dateStr)){ return dateStrNull; } //如果小于8位 if(dateStr.length < 8){ return lengthLt8; } dateStr = addHRToStr(dateStr); var regResult = dateStr.replace(YYYYMMDDReg,''); //符合格式 if(regResult==''){ var line_one = dateStr.indexOf('-'); //獲取第一個(gè)橫- var line_two = dateStr.lastIndexOf('-'); //獲取第二個(gè)橫- var year_str = dateStr.substring(0,line_one); //獲取年 var month_str = dateStr.substring(line_one+1,line_two); //獲取月 var day_str = dateStr.substring(line_two+1); //獲取日 //轉(zhuǎn)換成數(shù)字格式 var year_num = getIntValue(year_str); var month_num = getIntValue(month_str); var day_num = getIntValue(day_str); //校驗(yàn)月份 var monthResult = validateMonth(month_num); if(monthResult!=success){ return monthResult; } //如果日期小于1 if(day_num<1){ return dayLT1; } //校驗(yàn)日期 return validateDay(year_num,month_num,day_num); }else{ return formatError; } return failure; } /** * 校驗(yàn)是否為YYYY-MM-DD HH:mm 日期+時(shí)分格式 * @param dateStr 時(shí)間字符串 * @param hourSys 小時(shí)制(默認(rèn)24小時(shí)制) * @returns */ function validateYYYYMMDDHHmm(dateStr,hourSys){ //如果日期字符串為空 if(strIsNull(dateStr)){ return dateStrNull; } //如果小時(shí)制為空,則設(shè)置為24小時(shí)制 if(strIsNull(hourSys)){ hourSys = hour24System; } var regResult = dateStr.replace(YYYYMMDDHHmmReg,''); //符合格式 if(regResult==''){ var line_one = dateStr.indexOf('-'); //獲取第一個(gè)橫- var line_two = dateStr.lastIndexOf('-'); //獲取第二個(gè)橫- var space = dateStr.indexOf(' '); //獲取空格 var colon_one = dateStr.indexOf(':'); //獲取第一個(gè)冒號(hào) var year_str = dateStr.substring(0,line_one); //獲取年 var month_str = dateStr.substring(line_one+1,line_two); //獲取月 var day_str = dateStr.substring(line_two+1,space); //獲取日 var hour_str = dateStr.substring(space+1,colon_one); //獲取小時(shí) var minute_str = dateStr.substring(colon_one+1); //獲取分鐘 //轉(zhuǎn)換成數(shù)字格式 var year_num = getIntValue(year_str); var month_num = getIntValue(month_str); var day_num = getIntValue(day_str); var hour_num = getIntValue(hour_str); var minute_num = getIntValue(minute_str); //校驗(yàn)月份 var monthResult = validateMonth(month_num); if(monthResult!=success){ return monthResult; } //如果日期小于1 if(day_num<1){ return dayLT1; } //校驗(yàn)日期 var dayResult = validateDay(year_num,month_num,day_num); if(dayResult!=success){ return dayResult; } //校驗(yàn)小時(shí) var hourResult = validateHour(hour_num,hourSys); if(hourResult!=success){ return hourResult; } return validateMinute(minute_num); }else{ return formatError; } return failure; } /** * 校驗(yàn)是否為YYYY-MM-DD HH:mm:ss 日期+時(shí)分秒格式 * @param dateStr 時(shí)間字符串 * @param hourSys 小時(shí)制(默認(rèn)24小時(shí)制) * @returns */ function validateYYYYMMDDHHmmss(dateStr,hourSys){ //如果日期字符串為空 if(strIsNull(dateStr)){ return dateStrNull; } //如果小時(shí)制為空,則設(shè)置為24小時(shí)制 if(strIsNull(hourSys)){ hourSys = hour24System; } var regResult = dateStr.replace(YYYYMMDDHHmmssReg,''); //符合格式 if(regResult==''){ var line_one = dateStr.indexOf('-'); //獲取第一個(gè)橫- var line_two = dateStr.lastIndexOf('-'); //獲取第二個(gè)橫- var space = dateStr.indexOf(' '); //獲取空格 var colon_one = dateStr.indexOf(':'); //獲取第一個(gè)冒號(hào) var colon_two = dateStr.lastIndexOf(':'); //獲取第二個(gè)冒號(hào) var year_str = dateStr.substring(0,line_one); //獲取年 var month_str = dateStr.substring(line_one+1,line_two); //獲取月 var day_str = dateStr.substring(line_two+1,space); //獲取日 var hour_str = dateStr.substring(space+1,colon_one); //獲取小時(shí) var minute_str = dateStr.substring(colon_one+1,colon_two); //獲取分鐘 var second_st = dateStr.substring(colon_two+1); //獲取分鐘 //轉(zhuǎn)換成數(shù)字格式 var year_num = getIntValue(year_str); var month_num = getIntValue(month_str); var day_num = getIntValue(day_str); var hour_num = getIntValue(hour_str); var minute_num = getIntValue(minute_str); var second_num = getIntValue(second_st); //校驗(yàn)月份 var monthResult = validateMonth(month_num); if(monthResult!=success){ return monthResult; } //如果日期小于1 if(day_num<1){ return dayLT1; } //校驗(yàn)日期 var dayResult = validateDay(year_num,month_num,day_num); if(dayResult!=success){ return dayResult; } //校驗(yàn)小時(shí) var hourResult = validateHour(hour_num,hourSys); if(hourResult!=success){ return hourResult; } //校驗(yàn)分鐘 var minuteResult = validateMinute(minute_num); if(minuteResult!=success){ return minuteResult; } //校驗(yàn)秒 return validateSecond(second_num); }else{ return formatError; } return failure; } /** * 校驗(yàn)是否為HH:mm:ss 時(shí)分秒格式 * @param dateStr 時(shí)間字符串 * @param hourSys 小時(shí)制(默認(rèn)24小時(shí)制) * @returns */ function validateHHmmss(dateStr,hourSys){ //如果日期字符串為空 if(strIsNull(dateStr)){ return dateStrNull; } //如果小時(shí)制為空,則設(shè)置為24小時(shí)制 if(strIsNull(hourSys)){ hourSys = hour24System; } var regResult = dateStr.replace(HHmmssReg,''); //符合格式 if(regResult==''){ var colon_one = dateStr.indexOf(':'); //獲取第一個(gè)冒號(hào) var colon_two = dateStr.lastIndexOf(':'); //獲取第二個(gè)冒號(hào) var hour_str = dateStr.substring(0,colon_one); //獲取小時(shí) var minute_str = dateStr.substring(colon_one+1,colon_two); //獲取分鐘 var second_st = dateStr.substring(colon_two+1); //獲取分鐘 //轉(zhuǎn)換成數(shù)字格式 var hour_num = getIntValue(hour_str); var minute_num = getIntValue(minute_str); var second_num = getIntValue(second_st); //校驗(yàn)小時(shí) var hourResult = validateHour(hour_num,hourSys); if(hourResult!=success){ return hourResult; } //校驗(yàn)分鐘 var minuteResult = validateMinute(minute_num); if(minuteResult!=success){ return minuteResult; } //校驗(yàn)秒 return validateSecond(second_num); }else{ return formatError; } return failure; } /** * 校驗(yàn)是否為HH:mm 時(shí)分格式 * @param dateStr 時(shí)間字符串 * @param hourSys 小時(shí)制(默認(rèn)24小時(shí)制) * @returns */ function validateHHmm(dateStr,hourSys){ //如果日期字符串為空 if(strIsNull(dateStr)){ return dateStrNull; } //如果小時(shí)制為空,則設(shè)置為24小時(shí)制 if(strIsNull(hourSys)){ hourSys = hour24System; } var regResult = dateStr.replace(HHmmReg,''); //符合格式 if(regResult==''){ var colon_one = dateStr.indexOf(':'); //獲取第一個(gè)冒號(hào) var hour_str = dateStr.substring(0,colon_one); //獲取小時(shí) var minute_str = dateStr.substring(colon_one+1); //獲取分鐘 //轉(zhuǎn)換成數(shù)字格式 var hour_num = getIntValue(hour_str); var minute_num = getIntValue(minute_str); //校驗(yàn)小時(shí) var hourResult = validateHour(hour_num,hourSys); if(hourResult!=success){ return hourResult; } //校驗(yàn)分鐘 return validateMinute(minute_num); }else{ return formatError; } return failure; } /** * 添加橫線到日期的格式 * @param oldStr * @returns {String} */ function addHRToStr(oldStr){ //如果存在-或者/ if(oldStr.indexOf('-')>=0 || oldStr.indexOf('/')>=0){ return oldStr; } //如果小于6或者大于8 if(oldStr.length != 8 ){ return oldStr; } var idx1 = 4; var idx2 = 6; if(oldStr.length == 6){ idx2 = 5; }else if(oldStr.length == 7){ idx2 = 6; } var newStr = oldStr.substring(0,4) + "-" + oldStr.substring(4,idx2) + "-" + oldStr.substring(idx2); return newStr; } /** * 校驗(yàn)是否大于當(dāng)前時(shí)間(自動(dòng)檢測(cè)傳入的時(shí)間格式) * @param dateStr * @returns */ function isMorethanNow(dateStr){ var result = 'equals'; //如果是YYYY-MM-DD if(dateStr.replace(YYYYMMDDReg,'')==''){ result = compareNow(dateStr,dateCompare); //如果是YYYY-MM-DD HH:mm:ss }else if(dateStr.replace(YYYYMMDDHHmmssReg,'')==''){ result = compareNow(dateStr,dateTimeCompare); //如果是YYYY-MM-DD HH:mm }else if(dateStr.replace(YYYYMMDDHHmmReg,'')==''){ result = compareNow(dateStr+":59",dateTimeCompare); //如果是HH:mm:ss }else if(dateStr.replace(HHmmssReg,'')==''){ result = compareNow(dateStr,timeCompare); //如果是HH:mm }else if(dateStr.replace(HHmmReg,'')==''){ result = compareNow(dateStr+":59",timeCompare); } //如果大于 if(result == dateTimeGTNow){ return 'true'; }else if(result == dateTimeLTNow){ return 'false'; }else{ return 'equals'; } } /** * 比較當(dāng)前的日期或者時(shí)間(日期,時(shí)間) * @param dateStr * @param compareType 比較方式 date,time,dateTime (默認(rèn)比較年月日) */ function compareNow(dateStr,compareType){ //如果比較方式為空 if(strIsNull(compareType)){ compareType = dateCompare; } //獲取當(dāng)前日期 var now = new Date(); //比較日期 if(compareType == dateCompare){ var nowDate = new Date(now.getFullYear()+'/'+(now.getMonth()+1)+'/'+now.getDate()); var fd_date = new Date(dateStr.replace(/-/g,'/')); if(fd_date>nowDate){ return dateTimeGTNow; }else if(fd_date<nowDate){ return dateTimeLTNow; }else{ return equality; } //比較年月日時(shí)分秒 }else if(compareType == dateTimeCompare){ var fd_date = new Date(dateStr.replace(/-/g,'/')); if(fd_date>now){ return dateTimeGTNow; }else if(fd_date<now){ return dateTimeLTNow; }else{ return equality; } //比較時(shí)分秒 }else if(compareType == timeCompare){ var nowTimeStr = now.getHours()+''+ now.getMinutes()+''+ now.getSeconds(); var dateStrNoSpace = dateStr.replace(/:/g,''); if(dateStrNoSpace>nowTimeStr){ return dateTimeGTNow; }else if(dateStrNoSpace<nowTimeStr){ return dateTimeLTNow; }else{ return equality; } } } /** * 校驗(yàn)月份是否合法 * @param month_num 月份 * @returns */ function validateMonth(month_num){ //如果月份大于12或小于1 if(month_num>12){ return monthGT12; }else if(month_num<1){ return monthLT1; } return success; } /** * 校驗(yàn)日期是否合法 * @param year_num 年份 * @param month_num 月份 * @param day_num 日期 * @returns */ function validateDay(year_num,month_num,day_num){ if(day_num<1){ return dayLT1; //如果月份是1,3,5,7,8,10,12 }else if((month_num==1||month_num==3||month_num==5||month_num==7 ||month_num==8||month_num==10||month_num==12)&&day_num>31){ return dayGT31; //如果月份是4,6,9,11 }else if((month_num==4||month_num==6||month_num==9||month_num==11) &&day_num>30){ return dayGT30; //如果月份是2 }else if(month_num==2){ //如果為閏年 if(isLeapYear(year_num)&&day_num>29){ return dayGT29; }else if(day_num>28){ return dayGT28; } } return success; } /** * 校驗(yàn)是否為閏年 * @param year_num * @returns */ function isLeapYear(year_num){ /*年份為4的倍數(shù)不一定是閏年 * (1)年份不是100的倍數(shù)但是4的倍數(shù)都是閏年 * (2)年份是400的倍數(shù)的年份是閏年 (如1900年不是閏年,而2000年是閏年) */ return year_num%4==0&&(year_num%100!=0||year_num%400==0); } /** * 校驗(yàn)小時(shí) * @param hourSys 小時(shí)制 * @param hour_num * @returns */ function validateHour(hour_num,hourSys){ //24小時(shí)制 if(hourSys == hour24System&&hour_num > 23){ return hourGT23; //12小時(shí)制 }else if(hourSys == hour12System&&hour_num > 11){ return hourGT11; } return success; } /** * 校驗(yàn)分鐘 * @param minute_num * @returns */ function validateMinute(minute_num){ //如果小時(shí)大于24 if(minute_num>59){ return minuteGT59; } return success; } /** * 校驗(yàn)秒鐘 * @param second_num * @returns */ function validateSecond(second_num){ //如果小時(shí)大于24 if(second_num>59){ return secondGT59; } return success; } /** * 根據(jù)字符串獲取整數(shù)值 * @param str * @returns */ function getIntValue(str){ if(strIsNull(str)){ return 0; } return str.replace(/^0+/g,''); } /** * 字符串是否為空 * @param dateStr */ function strIsNull(str){ if(str!=null &&str.replace(/(^\s*)|(\s*$)/g,'').length>0){ return false; } return true; } /** * 得到錯(cuò)誤的提示信息 * @param errCode 錯(cuò)誤碼 * @param controlName 控件名 * @param format 格式 */ function getErrorMsg(errCode,controlName,format){ if(errCode == dateStrNull){ return controlName+'不能為空'; }else if(errCode == formatError){ return controlName+'請(qǐng)按日期格式\''+format+'\'輸入'; }else if(errCode == lengthLt8){ return controlName+'請(qǐng)按日期格式\'YYYYMMDD\'輸入'; }else if(errCode == monthLT1){ return controlName+'填寫的月份有誤,月份不能小于1'; }else if(errCode == monthGT12){ return controlName+'填寫的月份有誤,月份不能大于12'; }else if(errCode == dayLT1){ return controlName+'填寫的日期有誤,日期不能小于1'; }else if(errCode == dayGT28){ return controlName+'填寫的日期有誤,平年的2月份日期不能大于28'; }else if(errCode == dayGT29){ return controlName+'填寫的日期有誤,閏年的2月份日期不能大于29'; }else if(errCode == dayGT30){ return controlName+'填寫的日期有誤,月份為4,6,9,11時(shí),日期不能大于30'; }else if(errCode == dayGT31){ return controlName+'填寫的日期有誤,月份為1,3,5,7,8,10,12時(shí),日期不能大于31'; }else if(errCode == hourGT23){ return controlName+'填寫的小時(shí)有誤,24小時(shí)制的小時(shí)數(shù)不能超過23'; }else if(errCode == hourGT11){ return controlName+'填寫的小時(shí)有誤,12小時(shí)制的小時(shí)數(shù)不能超過11'; }else if(errCode == minuteGT59){ return controlName+'填寫的分有誤,分鐘數(shù)不能超過59'; }else if(errCode == secondGT59){ return controlName+'填寫的秒有誤,秒鐘數(shù)不能超過59'; }else if(errCode == dateGTNow){ return controlName+'填寫日期有誤,不能大于當(dāng)前日期'; }else if(errCode == dateLTNow){ return controlName+'填寫日期有誤,不能小于當(dāng)前日期'; }else if(errCode == timeGTNow){ return controlName+'填寫時(shí)間有誤,不能大于當(dāng)前時(shí)間'; }else if(errCode == timeLTNow){ return controlName+'填寫時(shí)間有誤,不能小于當(dāng)前時(shí)間'; }else if(errCode == failure ){ return controlName+'填寫有誤'; } }
總結(jié)
到此這篇關(guān)于日期校驗(yàn)/時(shí)間校驗(yàn)正則表達(dá)式的文章就介紹到這了,更多相關(guān)日期時(shí)間校驗(yàn)正則表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
asp去掉html,保留img br p div的正則實(shí)現(xiàn)代碼
非常實(shí)用的一個(gè)函數(shù),這里主要用到了正則的匹配模式大家可以看腳本之家網(wǎng)站的正則專題2009-02-02正則文法與正則表達(dá)式的相互轉(zhuǎn)化問題(編譯原理)
這篇文章主要介紹了正則文法與正則表達(dá)式的相互轉(zhuǎn)化問題(編譯原理),?除了正則文法外,正則表達(dá)式也可以相應(yīng)的用來描述單詞,正則文法和正則表達(dá)式的能力相同,且可以互相轉(zhuǎn)化,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08手機(jī)號(hào)碼驗(yàn)證方法(正則驗(yàn)證)
這篇文章主要介紹了手機(jī)號(hào)碼驗(yàn)證方法(正則驗(yàn)證),在文章中還給大家補(bǔ)充了最新手機(jī)號(hào)的驗(yàn)證正則表達(dá)式,需要的朋友可以參考下2017-02-02JavaScript 實(shí)現(xiàn)基礎(chǔ) 正則表達(dá)式
正則表達(dá)式用來從某一段字符串中匹配所需要的字符,這些字符可以非常簡(jiǎn)單,也可以非常復(fù)雜。JavaScript生來就對(duì)正則表達(dá)式有著良好的支持,在網(wǎng)絡(luò)的字符搜索匹配中發(fā)揮著重要的作用。2009-08-08使用正則限制input框只能輸入數(shù)字/英文/中文等等
限制input框只能輸入數(shù)字或英文的方法有很多,下面為大介紹下使用正則是如何實(shí)現(xiàn)的,感興趣的朋友不要錯(cuò)過2013-11-11積累比較常用的正則表達(dá)式(例如:匹配中文、匹配html)
本文是小編在日常工作中積累并整理的有關(guān)一些常用的正則表達(dá)式(例如:匹配中文、匹配html),在此把全部?jī)?nèi)容分享在腳本之家網(wǎng)站,需要的朋友可以來腳本之家網(wǎng)站學(xué)習(xí)2015-10-10