2015-01-14 7 views
-6

정규 표현식에 익숙하지 않은 나는 정규 표현식 마스터 링을 사용하고 있습니다. 나는 하나의 문제에 빠졌고 책에서 ^와 $의 사용법을 구분할 수 없었다. 그들은 단일 텍스트가 아닌 모든 줄의 특정 문자열을 일치시키는 데 사용된다고 말합니다. 나는 다음 정규 표현식 즉 regx1에서 ^와 $를 사용하지 않은 코드 조각을 가지고있다. 다른 regx2에서는 사용했다. 하지만 결과는 다른 이드를 얻고 있습니다. 코드의 조각 상태 내가 결과에 진정한 얻는 경우에 처음에정규 표현식을 효과적으로 사용하는 방법

$(document).ready(function(){ 
    var regx1 = /yes|no/; 
    var regx2 = /^yes|no$/; 

    var str = 'we are the beauty of yes'; 
    var str1 = 'we are yes the beauty'; 

    //Test the regular condition... 
    if (regx1.test(str)) { 
    console.log(true); 
    } else { 
    console.log(false); 
    } 

    if (regx2.test(str1)) { 
    console.log(true); 
    } else { 
    console.log(false); 
    } 

}); 

인 반면 두 번째의 경우 두 번째 정규 표현식에 내가 같은 단어 즉 예 또는 아니오를 찾는하고 있지만 내가 거짓 얻을 상태. 그래서 두 가지의 차이점을 알려주십시오

+0

^및 $는 가장 간단한 정규식 자습서에서 설명합니다. 하나를 찾으십시오. –

+0

책에서 그들은 경계 조건으로 사용된다고 말합니다. 그 말은 모든 행에서 그 패턴을 일치시키는 것을 의미합니다. –

+0

이것은 achors에 관한 것이 아니라'|'연산자에 관한 것입니다. –

답변

1

^은 "yes"가 문자열의 시작 부분에 있다고 주장하고 $은 "no"가 다음 위치에 있다고 주장하므로 두 번째 테스트는 false를 반환합니다. 문자열의 끝. 어느 단어도 주어진 문자열의 어느 위치에도 있지 않습니다.

이 테스트를 true로 반환하려면 해당 단어 중 하나를 문자열의 해당 위치 중 하나에 지정해야합니다. 일반적으로

/^yes|no$/.test('we are yes the beauty'); // false 
/^yes|no$/.test('yes we are the beauty'); // true 
/^yes|no$/.test('we are the beauty, no'); // true 

, ^$ 어떤 문자를 소비하지만 이러한 위치에서 주장하지 않습니다 앵커입니다.

+0

귀하의 설명을 주셔서 감사합니다 hwnd –

0
/yes|no/ 

위의 내용은 어디에서나 예 또는 아니오와 일치합니다. "yesterday" 또는 "none"과 같은 문자열에서도 일치합니다.

/^yes|no$/ 

위의 문자열의 에서 문자열의 및 no을 시작하는 에서 yes 일치합니다. 그것은 원하지 않는다. 대신 ^(yes|no)$이됩니다. 또한 /\b(yes|no)\b/과 같이 단어 경계를 사용하여 yes 또는 no"none""yesterday"과 일치하지 않게하십시오.

+0

감사합니다 amit이 단어의 경계를 읽었지만, 지금은 명확하지 않습니다 –

관련 문제