2009-05-19 3 views
0

나는 숫자를 확인하기 위해 다음 코드를 사용하는 jQuery 플러그인 tablesorter에로 정렬 문제를 디버깅하려고했다 '.'config.decimal의 값이JavaScript에서 정규 표현식에 대해 테스트가 false를 반환하는 동안 결과가 일치하는 이유는 무엇입니까?

this.isDigit = function(s,config) { 
       var DECIMAL = '\\' + config.decimal; 
       var exp = '/(^[+]?0(' + DECIMAL +'0+)?$)|(^([-+]?[1-9][0-9]*)$)|(^([-+]?((0?|[1-9][0-9]*)' + DECIMAL +'(0*[1-9][0-9]*)))$)|(^[-+]?[1-9]+[0-9]*' + DECIMAL +'0+$)/'; 
       return RegExp(exp).test($.trim(s)); 
      }; 

이제 s = '0'이면 실패하지만 대신 일치 항목을 실행하면 RegEx가 예상대로 긍정적으로 응답하는 것처럼 보입니다.

return exp.match($.trim(s)) != null 

어떻게 다른 결과를 얻으려면이 처리가 다릅니 까? 내가 그 시험은 부울 값을 반환하고 일치하는 문자열을 돌려줍니다 이해

<tr class=""> 
    <td><a href="#">Click</a></td> 
    <td>Annen Woods</td> 
    <td>131</td> 
    <td>20</td>   
    <td>5</td> 
    <td>3</td> 
    <td>12</td> 
    <td>6</td> 
    <td>50%</td> 
    <td>0</td>  
</tr> 

:

그냥 경우에 당신의이 (마지막 열은 텍스트로 볼) 파생 된 HTML을 원했다.

return RegExp(exp).test($.trim(s)); 

상당 :

return exp.match($.trim(s)) != null 

답변

1

정규 표현식을 작성하는 데 사용 된 함수로 인해 이상한 우연의 일치라고 생각합니다.

String은 String의 멤버입니다.

테스트는 RegExp의 구성원입니다.

그러나이 함수에서 exp는 문자열로 정의됩니다. 그래서, 기술적으로, 정규식이 아닌 문자열 값으로 exp를 사용하여 String match()를 실행하고 있습니다.

RegExp 생성자를 통해 exp를 실행하면 test()와 동일한 결과를 반환해야합니다.

1

일치하는 반환 값의 배열 일부 엔진 테스트가 먼저 반환에, 테스트, 부울을 반환이 정규 표현식이 아닌 이유

궁극적 인 질문은 결과

+0

좋아요,하지만 일치가 작동하는 경우 테스트가 true를 반환하지 않는 이유는 무엇입니까? – catalpa

0

적절한 개체를 뒤집습니다.

return exp.match($.trim(s)) != null 

return $.trim(s).match(exp) != null 

원래 코드는 단지 "0"

아직도 tablesorter에 버그 보인다 정규식 문자열에 존재하는 것으로 확인되었다이어야합니다. 테이블에 0 값이 있으면 구문 분석기를 '숫자'로 선언해야합니다. JQuery tablesorter problem

관련 문제