2013-07-29 2 views
0

다음 정규 표현식을 사용하여 'stores'을 '/'과 ''사이에 일치 시키시겠습니까? '앞에 슬래시'/ '이 있습니까?'? '하지만 웬일인지 유효하지 않은 한정 기호가 있다고 말하는 데 실패합니다. 왜 그것이 틀렸는가와 어떤 문제가 있다고 생각하는가? '/?'을 (를) 삭제하려고 시도 했습니까? '이지만 여전히 동일한 것을 말합니다.lookahead와 lookbehind가 잘못된 Javascript 정규식은 무엇입니까?

var n=str.match(/(?<=\/)stores\/?(?=\?)/); 

고마워요!

+4

참고로 JavaScript는 lookbehinds를 지원하지 않습니다. – HamZa

+0

아, 알겠습니다. 이 상황에 적용 가능한 모든 작업장? –

답변

1

나는 이것이 유효하지 않은 부분이라고 생각한다. (? < = /) - javascript의 lookahead는 (? = y); lookbehinds를 지원하지 않습니다. 나는 당신이 사용하려하고 있다고 가정합니다. 이 정규식 그래도 작동해야

일치
\/stores\/?\? 

:

슬래시가 스트링 '저장'다음

,

는 0 또는 전진 한 다음에이

슬래시

다음에 물음표가 나옵니다.

+0

것은 내가 단어 저장소 (어쨌든 할 수있는 잠재적으로 현재 '**/**'없이도) 일치해야합니다. 미안 해요 나는 정규 표현식에 그냥 초보자입니다. 어떤 팁? http://regexr.com?35omo –

+0

오 ~ 알았습니다. 음 ... \ 상점 (? = \ /? \?)과 같은 것이 있습니까? Lookahead는 후행/및? 일치하지 않으므로 이제는 '/ stores'문자열이 포함 된 배열이 남습니다. 일치 항목을 사용하여 수행 할 작업에 따라 array.forEach (function (element, index, array) {array [index] = element.slice (1))를 사용하여 /를 제거 할 수 있습니다. – xdl

+0

참조하십시오, 나는 추가 처리를 피하려고했지만, 분명히 나는 ​​선택의 여지가 없어 당신에게 대단히 감사합니다! –