역사상 가장 상세 한 js 날짜 정규 표현 식 공유

3188 단어 js날짜 정규
가장 간단 한 정규:/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-01T 00:00:00 Z 이다.
먼저 연도 와 무관 한 앞의 세 가지 규칙 을 고려 하면 연 도 는 통일 적 으로 글 을 쓸 수 있다.
(?!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:4 년 1 윤([0-9]{2}(0[48]|[2468][048]|[13579][26])
2:백년 불 윤,400 년 재 윤(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)
네 가지 규칙 이 모두 실현 되 었 고 서로 영향 을 주지 않 았 습 니 다.합치 면 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)$
이 정규 표현 식 은 검증 에 만 사용 되 기 때문에 포획 그룹 은 의미 가 없고 자원 만 차지 하여 일치 효율 에 영향 을 미 치기 때문에 비 포획 그룹 을 사용 하여 최적화 할 수 있다.
^(?:(?!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]); }
YYY-MM-DD||YYY/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"
yyy-mm-dd hh:mm:ss 의
/^(d{4})-(d{2})-(d{2}) (d{2}):(d{2}):(d{2})$/ ;
이거 yyy-mm-ddde 거 예요.
/^(d{4})-(d{2})-(d{2})$/

좋은 웹페이지 즐겨찾기