2012-11-22 8 views
0

"$" 사이에 올 단어와 일치하는 정규 표현식을 작성하려고합니다. var myString = "$ 개 $ # 및 $ 쥐가 있습니다. 마을에서 $ "; 는 나는 그것을

 var reg = /^$(.*)$/gmi 

의 expresion을 쓴 개를 일치 을 배신하고 싶지만은 "$"라인의 끝 부분의 특수 문자가되고, 내가 그것을 피할 수있는 방법, 내가 사용할 수 있기 때문에 그것은하지 않습니다 "\"?? 올바른 표현을 제안 할 수 있습니다.

+0

https://developer.mozilla.org/en-US/docs/ JavaScript/Guide/Regular_Expressions # Using_Special_Characters – DCoder

+5

올바른 해결책 인'\\'을 시도했을 때 무슨 일이 일어 났습니까? –

답변

1

당신이 '를 사용한다 말했듯의 $

  • 제로 \ '특별 탈출 문자. 또한 '^'는 일치시키고 자하는 문자열의 시작입니다. 다음 사용해야합니다 : 당신은 탈출을 위해 \를 사용

    /\$(.*)\$/g 
    
  • +0

    : s/end/start/...? – Amadan

    +0

    @matov, 문자열에 /\$(.*)\$/gmi를 사용하면 "게임에 대한 $ 게임 $ '과 $ dog $$"게임에서 모든 것을 반환합니다. ...... 개 – Riddle

    +0

    이 경우에'm'과'i'는 무엇입니까? –

    0

    "\"사용할 수 있습니까 ??

    예.

    왜 직접 해보지 않으셨습니까?

    var reg = /^\$(.*)\$/gmi 
    

    는 일치 : 문자열의

    • 시작
    • 이상의 문자
    • $
    1
    /\$(.*)\$/ 
    

    , 당신은 생각한다. 또한 귀하의 요구 사항에 따라 ^ (문자열 시작)은 해를 입 힙니다.

    경우 당신은 문자열의 여러 모습을 가지고, 당신은 당신이 내용에서 터미네이터를 허용 하나, 그래서 탐욕 (기본)의 조심해야 :

    /\$([^$]*)\$/g 
    

    을하거나 반복 연산자 비을 -greedy :

    /\$(.*?)\$/g 
    
    +0

    matov의 게시물 – Riddle

    +0

    에 작성한 의견을 볼 수 있습니까? 명확하게; 나는 당신의 수식어를 알아 채지 못했습니다. – Amadan

    +0

    아, 이제 정답으로 맞 춥니 다. –

    1

    예, 개별 잡을려면 $...$ 표시된 단어가이 정규 표현식 시도 \ -s 이루어집니다 탈출 :

    을 당신은 몇 가지 의견에 언급 한 바와 같이
    /\$([^$]+)\$/gmi // inside character classes (the []-s) you don't need to escape it, but if you do it does the same thing 
    
    2

    은, 탐욕에 문제가 있습니다. * 가능한 한 많이 소모되므로,이 .* 같이 사용하는 경우는 다른 후 하나를 찾을 수 있다면 그것은 또한 더 $을 소모합니다. 두 가지 가능성이 있습니다.

    /\$(.*?)\$/g 
    

    가 지금은 가능한 한 적게 소모됩니다 : 가장 빠르고 가장 일반적인 하나는 단순히 한정 기호 ungreedy을 확인하는 것입니다.더 되돌아가 필요하지 않기 때문에, 이것은 일반적으로 더 효율적입니다

    /\$([^$]*)\$/g 
    

    : 권장되는 방법은 그러나 반복과 구분 기호가 상호 배타적하고 욕심 반복을 유지하는 것입니다. (제발, 어떤 특정한 경우에는 백 트랙킹 버전이 더 효율적 일지 모르지만 일반적으로 권장되는 방법입니다.)

    관련 문제