2010-05-12 5 views
0

여기에 코드입니다 :정규식과 자바 스크립트, 일부 일치가 사라집니다!

> var reg = new RegExp(" hel.lo ", 'g'); 
> 
> var str = " helalo helblo helclo heldlo "; 
> 
> var mat = str.match(reg); 
> 
> alert(mat); 

그것은 "helalo, helclo"경고,하지만 난 "helalo, helblo, helclo, heldlo"이 될 것으로 기대합니다. 그 중 절반 만 일치합니다. 한 번만 계산할 수있는 공간 때문입니다. 그래서 나는 처리하기 전에 모든 공간을 두 배로 만들려고했지만, 어떤 경우에는 충분하지 않습니다. 설명과 해결책을 찾고 있습니다.

들으

␣helalo␣이 일치 된

답변

5
"␣helalo␣helblo␣helclo␣heldlo␣" 
// 11111111------22222222------- 

, 문자열 왼쪽은 최고의 공간없이 helblo␣...입니다. 하지만 정규 표현식에는 선행 공백이 필요하므로 ␣helclo␣으로 건너 뜁니다.

식이 공간을 차지하는 것을 피하려면 미리보기를 사용하십시오. (워드 경계로 또는 사용 \b.)

var reg =/hel.lo(?=)/g 

+0

감사합니다. – user339459

+0

+1 일반적으로 // 11111111 ------ 22222222 ------- 시각화는 고통스런 정규식 세계에서 처음 시작하는 사람들에게 매우 유용합니다! – Mathew

1

그것은, 정규식 일치 일치하는 문자열 후 다음 문자로 진행하고 간다.

\b을 사용하면 단어 경계를 일치시킬 수 있습니다. 원하는 경우 나중에 공백을 추가 할 수 있습니다.

\bhel.lo\b 
+0

wuth의 문제는 예를 들어 ': helalo :'와 일치한다는 것입니다. – user339459

관련 문제