날짜 yyy - MM - dd 정규 표현 식

2218 단어
3. 통합 식 
평년: 
연 도 는 통일 적 으로 작성 할 수 있 습 니 다: (?! 0000) [0 - 9] {4} 
평년 을 포함 한 모든 연도 의 월 은 1 ~ 28 일 을 포함한다. (0 [1 - 9] | 1 [0 - 2]) - (0 [1 - 9] | 1 [0 - 9] | 2 [0 - 8]) 
평년 을 포함 한 모든 연 도 는 2 월 을 제외 하고 29 일과 30 일 을 포함한다. (0 [13 - 9] | 1 [0 - 2]) - (29 | 30) 
평년 을 포함 한 모든 연도 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) 
풍년 
4 로 나 눌 수 있 으 나 100 으로 나 눌 수 없 는 연도: ([0 - 9] {2} (0 [48] | [2468] [048] | [13579] [26]) 
400 으로 나 눌 수 있 는 연도. 400 으로 나 눌 수 있 는 수 는 100 으로 나 눌 수 있 기 때문에 두 번 째 는 00: (0 [48] | [2468] [048] | [13579] [26]) 00 이 틀림없다. 
합치 면 모든 윤년 의 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)$ 
 
   
function checkDate(fname){ 
var sc = $("#"+fname); 
var s = sc.val(); 
if (sc==null){ 
alert("Element is null"); 
return true; 

var reg=/^(?:(?!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)$/; 
if(!s.match(reg)){ 
alert("false"); 
}else{ 
alert("true"); } 


원본 링크:http://www.jb51.net/article/28034.htm

좋은 웹페이지 즐겨찾기