2013-03-02 2 views
0

나는 내가 가진 내 로그에서상태와 정규식 폰갭

$('#resPage').live('pageshow', function(event) { 

    application.previousButton(); 

    //get pdf 
    var text = ''; 
    var value; 
    var get = application.readGet(); 
    switch(get['id']){ 
     case '1': 
      var patt = /annales/g; 
      var cutLen = 20; 
      break; 
     case '2': 
      var patt = /copies/g; 
      var cutLen = 19; 
      break; 
    } 
    $.ajax({ 
     url:application.api+'/ressources', 
     success:function(data){ 
      text = "<ul data-role='listview' data-inset='true' >" 
      data = JSON.parse(data); 
      for(elem in data.files){ 
      console.log(elem) 
      console.log(patt.test(data.files[elem])); 
      if(patt.test(data.files[elem])){ 
       console.log('add'); 
       value = data.files[elem].substr(1); 
       text += application.textRelLink(value,cutLen); 
      } 
     } 
     text +="</ul>" 
     $('#resPage .content').html(text); 
     $('#resPage .content ul').listview(); 
     } 
    }) 
}); 

작동 이해할 수 없다 :

03-02 11:03:14.722: D/CordovaLog(23226): 0 
03-02 11:03:14.722: D/CordovaLog(23226): false 
03-02 11:03:14.722: D/CordovaLog(23226): 1 
03-02 11:03:14.722: D/CordovaLog(23226): false 
03-02 11:03:14.722: D/CordovaLog(23226): 2 
03-02 11:03:14.722: D/CordovaLog(23226): true 
03-02 11:03:14.722: D/CordovaLog(23226): 3 
03-02 11:03:14.722: D/CordovaLog(23226): true 
03-02 11:03:14.730: D/CordovaLog(23226): 4 
03-02 11:03:14.730: D/CordovaLog(23226): true 
03-02 11:03:14.730: D/CordovaLog(23226): 5 
03-02 11:03:14.745: D/CordovaLog(23226): false 
03-02 11:03:14.745: D/CordovaLog(23226): 6 
03-02 11:03:14.745: D/CordovaLog(23226): false 

하지만 추가하지 않아도 때 진정한

도움을 주셔서 감사합니다

편집 :

데이터 값

03-02 11:25:05.253: D/CordovaLog(23611): {"files":[".\/thumbs\/pdf\/methodo\/sdsdfsd_sdf.pdf",".\/thumbs\/pdf\/methodo\/test!!.pdf",".\/thumbs\/pdf\/annales\/ddfgdfg.pdf",".\/thumbs\/pdf\/annales\/big.pdf",".\/thumbs\/pdf\/annales\/test.pdf",".\/thumbs\/pdf\/copies\/test.pdf",".\/thumbs\/pdf\/poly\/gdfhf.pdf"],"dirs":[".\/thumbs\/pdf\/poly\/",".\/thumbs\/pdf\/copies\/",".\/thumbs\/pdf\/annales\/",".\/thumbs\/pdf\/methodo\/"]} 
+0

아약스의 성공 블록에서'data'의 반환 값을 볼 수 있습니까? –

+0

파싱하기 전에 데이터를 추가했습니다. – Ajouve

+0

여기에 'patt.test (data.files [elem])'상태가 참이라고 생각하지 않습니다. 그게 당신이 당신의 로그에'add '를 인쇄하지 않은 이유입니다. –

답변

1

를 분석하기 전에 전에 정규 표현식의 lastIndex 속성을 다시 할 필요는 정규식에서 불필요한 g 플래그를 제거하는 경우, 또는

console.log(patt.test(data.files[elem])); 
patt.lastIndex = 0; 
if(patt.test(data.files[elem])){ 

을 다시 테스트 lastIndex을 다시 설정할 필요가 없습니다.

g 플래그와 함께 정규 표현식을 사용하면 다음 테스트에서 해당 위치 (lastIndex)에서 검색을 시작할 수 있도록 마지막 일치 항목을 찾았습니다.

Why RegExp with global flag in Javascript give wrong results?을 참조하십시오.

+0

괜찮습니다. – Ajouve