2012-10-04 4 views
3

내가 정규식에 대한 몇 가지 튜토리얼을 읽고 내가 문장 보았다자바 스크립트에서 (? <= exp)를 대체 하시겠습니까?

(? < = EXP) : 접두사 특급 예를 들어

다음 어떤 위치를 일치를 좀 문자열을 가지고 :

공유

케어

모든 문자열을 찾으려면 "are"가 포함되지만 "are"는 "Sh"다음에 나와야합니다 : /(?<=Sh)are/i. 이제는 "공유"만 일치하고 일치 색인은 2입니다 ("공유"에서 "공유"가 아닌 "일치").

하지만 Javascript에는이 정규식이 없습니다. Javascript에서 어떻게 그렇게 할 수 있습니까?

감사합니다.

답변

3

할 수 없습니다. Javascript의 정규 표현식 구현에는 lookbehind 어설 션이 없습니다. 당신이 정말로 lookbehinds 필요한 경우 /Sh(are)/i

  • 는 타사을 사용할 수

    대신 그룹화를 사용할 수있는 몇 가지 상황에서 대안

    • 당신이 실제로 일치 원하는 것을 캡처 정규 표현식 라이브러리.

    관련

  • +0

    주셔서 감사합니다 대답. 일치 색인은 2 (일치 "are") : "Share".search (regex) = 2. 나에 대한 아이디어가 있습니까? –

    +1

    @BoodCarley : 제 3 자 정규 표현식 라이브러리를 사용할 수 있습니다. 비슷한 질문에 대한 링크는 내 업데이트를 참조하십시오. –

    0

    이는 캡처하지 않고 are을 찾기 위해 정규식을 알려줍니다 non capturing groups

    /(?:sh)(are)/ 
    

    사용할 수 있습니다 sh 그룹. 당신이 일치하는 간단한 패턴을 가지고 그러나 이러한 맥락에서이 필요하지 않습니다 그리고 당신은

    /sh(are)/ 
    

    가 나는 경우 첫 번째 그룹

    +0

    ''Share Care'.match (/(?=.+? are) (. +?) /)'''' "S", "S"]'- 많이 테스트합니까? – WTK

    +0

    고마워,하지만 내가 원하는게 아니야. –

    0

    에게 다음 일치 같은 것을 다른 솔루션에서 답을 찾아 할 수있는 물론 내가 are는 하나의 단어 나 Sh 앞에 문자열이 될 수있는이 정규 표현식

    /(Sh|\b)(are)/gi 
    

    를 사용하는 것이 이해했다.

    +0

    답변 해 주셔서 감사합니다. 하지만이 정규식을 사용하면 일치 색인은 0이 아니라 2가됩니다. 더 많은 해결책을 줄 수 있습니까? –

    +0

    인덱스가 중요한 이유는 무엇입니까? 어떤 끈을 맞추려고합니까? 바이올린을 입력하십시오. 예 : – fcalderan

    +0

    . 나는 "어떤"조건을 만족 시키려고한다. –

    2

    수있는 유일한 방법은 (물론 당신은 또한 당신의 정규식에 내다 주장이없는 경우에만 작동이) 문자열을 반대하고 lookbehind 대신 내다을 사용하는 것입니다에 대한

    /era(?=hS)/i 
    
    +0

    방금 ​​내 마음을 날려 버렸어. –

    관련 문제