2013-10-20 2 views
1

특정 패턴을 따르는 날짜가 포함 된 HTML 표가 있습니다. 셀에 날짜가 있으면 동일한 열의 모든 셀은 동일한 패턴의 날짜입니다. jQuery를 사용하여 형식을 일치시키고 열을 반환하려면 어떻게해야합니까?jQuery로 표 셀의 날짜 패턴 일치

$('table td').filter(function() { return /.../.test($(this).html()); }).map(function() { return $(this).index(); }); 

... 당신이 날짜 형식과 일치하는 정규 표현식 /.../입니다 :

+-------+-----------+-----------------------+-----------------------+----------+ 
| Type | Compiled? | Modified (CDT)  |  Created (CDT)  | Priority | 
+-------+-----------+-----------------------+-----------------------+----------+ 
| Fancy | yes  | Oct 18, 2013 16:17:00 | Oct 08, 2013 05:50:32 |  75 | 
| Fancy | yes  | Oct 18, 2013 16:16:28 | Oct 18, 2013 15:46:05 |  75 | 
| Fancy | yes  | Oct 18, 2013 16:15:25 | Oct 17, 2013 19:04:51 |  75 | 
+-------+-----------+-----------------------+-----------------------+----------+ 
+0

이 열의 모든 셀을 검색 하시겠습니까? 한 열에 속한 모든 셀이 같은 패턴을 가짐을 알기 때문에 파싱을 전혀하지 않아도이를 수행 할 수 있습니다. – Stphane

+0

@ f00bar 예측할 수없는 열 머리글과 열 순서가있는 다른 테이블이 있습니다. – Keyslinger

+0

날짜 패턴은 항상 동일합니까? – Stphane

답변

1

당신은이 라인을 따라 뭔가를 시도 할 수 있습니다 : 여기에 패턴을 보여주는 샘플 테이블입니다 찾고. 그러면 해당 패턴에 대해 하나 이상의 일치 항목이 포함 된 열 인덱스 배열이 반환됩니다. 고유 한 목록이 아닙니다. 그냥 절대적으로 유효한 날짜 확신 할 필요가 없습니다 패턴을 찾는 경우 다음 정규식

/^\w{3}\s\d+,\s\d{4}\s\d{1,2}:\d{2}:\d{2}$/ 

가 (이 Ziptember의 45에 99시 방향과 일치합니다 ... 작동합니다 그래서 어쩌면 더 나은 정규식을 얻을)

나는 밀도 라인이 조금 조금 더 나은 것들을 설명하는 것을 무너 뜨리는 것입니다 :.

date_filter = function() { return /^\w{3}\s\d+,\s\d{4}\s\d{1,2}:\d{2}:\d{2}$/.test($(this).html())} 

map_td_to_index = function() { return $(this).index(); } 

console.log($('table td').filter(date_filter).map(map_td_to_index)); 

편집 : 단지 인 $ .unique의 잘못된 사용을 제거 DOM 요소 배열의 경우 당신은 이런 식의 사용을 만들 수 :

$.fn.extend({ unique: function() 
       { 
       arr = $.makeArray(this); 
       return $.grep(arr, function(elem, idx) 
            { 
            return $.inArray(elem, arr, idx + 1) === -1; 
            }); 
       } 
      }); 

그럼 그냥 전화 .unique()map()에 대한 호출 후.

+0

필터 함수 – Stphane

+0

네, 공정한 포인트 안에서 셀의'html()'이 아닌'text()'에 대해서 테스트 할 것입니다. – struthersneil

+0

어떤 이유로, 내가 이것을 테스트 할 때 $ .unique는 중복 값을 제거하지 않습니다. 아마도 모든 중복 값을 포함하는 고유 한 jQuery 객체를보기 때문일 수 있습니다. 그러나 같은 열의 다른 모든 셀은 패턴과 일치하기 때문에 패턴 일치의 첫 번째 행만 확인하면됩니다. 네가 내게 준 것을 마음에 새겨서 적응할 수있다. – Keyslinger