2012-08-07 5 views
0

본질적으로 비슷한 문자열을 'foo = "bar"'과 유사하게 사용합니다. 지금이 문자열이 특정 정규 표현식을 통과하는지 테스트 할 때 ["|']?으로 'bar'주위의 따옴표를 테스트하여 해당 영역의 전체 RegEx를 ["|']?(\w+)["|']? 행에 따라 테스트합니다 (가독성을 위해 관련없는 표현 부분을 제거하고 있습니다).).따옴표를 여는 경우에만 닫는 견적을 일치 시키십시오.

이 의미 몇 가지 : 단어 주위

  • 따옴표 큰 따옴표, 작은 따옴표, 또는 존재하지 않는 될 수 있습니다.
  • 그들은 관계없이 "연결"되어 있지 않습니다. 왼쪽에 큰 따옴표를 사용하고 오른쪽에 따옴표가없는 경우에도이 값은 계속 전달됩니다.

제 목표는 첫 번째 인용을 기준으로 두 번째 인용과 일치시키는 것입니다. RegEx를 사용하여이 기능을 구현하고 싶습니다. JavaScript의 구현 범위 내에서 가능한 한도에 다다 랐습니다. 나는 lookaheads/behinds에 대해 매우 잘 알고 있습니다.하지만 이해한다면, 이것들은 따옴표가 만지면 관련이있을 것입니다. 나는 그들이 잘못 이해하고 있기를 바라고 있습니다.

피씨 : 저는 최신 브라우저 만 걱정하므로 IE < 10 지원은 문제가 아닙니다.

P.P.S : RegEx를 사용하여이 작업을 수행하고 싶습니다. 노력을 덜어 주시고 대안을 제시하지 마십시오. "너는 이것을 할 수 없다"는 것이 충분합니다.

답변

1

당신은 쓸 수 :

/(["'])\w+\1/ 

\1는 첫 번째 capture-group ((["']))이 캡처 한 것과 동일한의 문자열을 일치합니다. 이 오류 것 같았다 때문에 내가의 character class["']에서 파이프 문자 |을 제거

참고 : 파이프 문자는 문자 클래스 내부에 특별한 의미가 없습니다. ["|']은 일치시킬 수 있기를 원하는 경우에만 정확합니다. |bar|.

+0

아하! 네가 할 수 있다는 것을 완전히 잊었다! 고마워요, 이건 정확히 내가 찾던거야. –

+0

파이프 사용에 대한 고마워 감사합니다. 나는 그들이 그룹핑 (foo | bar)에서 사용된다는 것을 알고 있으며, 나의 순진함에서 그들은 캐릭터 클래스에 있다고 생각했다. –

+0

이'^ $'앵커가 필요하지 않습니까? – Alnitak

관련 문제