javascript
  • regex
  • 2016-06-20 4 views 1 likes 
    1

    함수를 호출하려고하는데 두 개의 매개 변수를 전달합니다. 문자열 및 RegExp를 문자열로 사용합니다. if 부분으로 들어가기 때문에 테스트가 잘된 것처럼 보이지만 구문 분석 함수가 호출 된 후에 결과를 얻지 못합니다. 무엇이 잘못되었는지 확실하지 않습니다. 어떤 팁? 감사!Javascript의 함수에 RegEx 전달하기

    var regEx_eNode = "S1"; 
    var mystring = 'This is my S1ring!'; 
    
    function getField(eventstr, regfield) { 
        var retval; 
        var regExpression = new RegExp(regfield,'g'); 
        var reg_Exp; 
        if (regExpression.test(eventstr)) { 
        reg_Exp = regExpression.parse(eventstr); 
        alert("reg_Exp[1]"); 
        retval = reg_Exp[1]; 
        alert(retval); 
        } else { 
        retval = "not_available"; 
        } 
        return retval; 
    } 
    alert('Result: ' + getField(mystring,regEx_eNode)); 
    
    +0

    제거'/ g', var에 regExpression = 새 정규식 (regfield)'사용합니다': http://stackoverflow.com/questions/1520800/why- regexp-with-global-flag-in-javascript-give-wrong-results –

    +0

    regfield가 사용자로부터 나온 것이라면 나쁜 생각입니다. –

    +0

    여전히 Wiktor에게 감사드립니다. 다시 가치를 얻지 마십시오. – Luzidl

    답변

    0

    JS RegExp.parse() 방법을 특징으로하지 않는다. String#match 또는 RegExp#exec을 사용할 수 있습니다.

    또한 RegExp#test 메서드에서 사용되는 정규식과 함께 /g 수정자를 사용하지 마십시오. 이로 인해 예기치 않은 결과가 발생할 수 있습니다.

    사용

    var regEx_eNode = "S1"; 
     
    var mystring = 'This is my S1ring!'; 
     
    
     
    function getField(eventstr, regfield) { 
     
        var retval; 
     
        var regExpression = new RegExp(regfield); // No `/g`! 
     
        var reg_Exp; 
     
        if (regExpression.test(eventstr)) { 
     
        reg_Exp = eventstr.match(regExpression); // <- String#match() 
     
        if (reg_Exp) { 
     
         retval = reg_Exp[0];      // Get the whole match 
     
         alert(retval); 
     
        } else { 
     
         alert("No match!"); 
     
        } 
     
        } else { 
     
        retval = "not_available"; 
     
        } 
     
        return retval; 
     
    } 
     
    alert('Result: ' + getField(mystring,regEx_eNode));

    관련 문제