2011-03-10 3 views
1

텍스트는 다음과 같습니다누군가이 정규 표현식이 다른 정규 표현식과 다르게 일치하는 이유를 설명 할 수 있습니까?

Here is some text! 

정규 표현식 (하나의 일치를보고)입니다 : .NET에서

Here is (\w+\s?)+ 

이 하나의 일치 : Here is some text

...하지만에 javascript에는 두 가지가 있습니다 : Here is some texttext.

왜 js에는 두 개의 일치 항목이 있고 .NET에는 오직 하나만 일치합니까?

+0

.NET에서 캡처 그룹 '$ 1'을 (를) 참조하려고 했습니까? –

답변

2

정규식의 괄호는 캡처 그룹을 만듭니다. js에서 볼 수있는 것은 전체 일치 및 그룹 일치입니다. .NET에서는 전체 일치를 볼뿐입니다 (그룹에도 액세스 할 수 있어야 함).

당신이 괄호 안에있는 대신 정규 표현식을 사용하는 것을 포착하지 않으려면 :

Here is (?:\w+\s?)+

0

당신이 일치으로 JS에서, 당신을 줄 .NET 것과 동일합니다 해야 할 일 :

var regex = new RegExp("Here is (\\w+\\s?)+", "g"); 

var txt = "Here is some text!"; 
while (match = regex.exec(txt)) { 
    window.alert(match[0]); 
} 

귀하가 예상 한대로 한 번만 경고해야합니다. 각 일치 배열은 위치 0에서 일치 항목을 포함하고 모든 캡처 그룹을 포함하지만 필요하지는 않습니다.

관련 문제