2012-07-27 3 views
3

내가 자바 스크립트에서 정규 표현식을 사용에 문제가 "수신 :"자바 스크립트 일치() 무효 정량

(?<= Received:)(.*?)(?=;) 

내가 시도하고 사이,이 경우에는 두 개의 문자열 사이에 everythig과 일치하는 것입니다 ";".

여기 내 코드입니다 :

var someString = "BlaBlaBla Received: blablabla; BlaBlaBla" 

var receivedString = someString.match(/(?<= Received:)(.*?)(?=;)/); 

그러나 두 번째 줄, 나는 불을 지르고에서 오류가 점점 오전 :

Error: invalid quantifier 
Source Code: 
    var receivedDateString = dates.match(/(?<= Received:)(.*?)(?=;)); 

는 당신의 도움을 주셔서 감사합니다.

답변

4

JavaScript는 lookbehind 어설 션을 지원하지 않습니다. (?<= Received:)은 유효한 구문이 아닙니다. 귀하의 오류의 근원 인 것으로 보입니다.

당신은 당신의 경기에 lookbehind을 통합해야합니다 다음 [^;]*

someString.match(/ Received: ([^;]*)/); 

, 당신은 심지어 더 이상 내다가 필요하지 않습니다. 직접 첫 번째 캡처 그룹의 내용을 액세스해야하는 경우

, 당신이 시도 할 수 :이 더 Received: 문자열에서 발견되지 않는 경우 (일치가있을 것으로 가정합니다

var receivedDateString =/Received: ([^;]*)/.exec(someString)[1] 

주, 인덱싱 작업이 실패합니다).

+0

감사합니다. @Tim, 동일한 결과를 얻기 위해 다른 방법을 사용하려면 어떻게해야합니까? –

+0

@Ana : 네.'.exec()'를 사용합니다. 내 편집을 참조하십시오. –

+0

좋아요, 지금 가지고 있습니다. 너무 고마워. 진짜 professionnal. –

1

?<=과 같은 구문은 자바 스크립트에서 지원되지 않습니다. https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions을 살펴보십시오.

+0

고맙습니다. 나는 그것에 대해 llok 걸릴 것이다. 이 사용법을 피하고 동일한 결과를 얻는 방법에 대한 해결책을 제게 줄 수 있다면 좋을 것입니다. –