2011-11-30 3 views
0

나는 전체 문자열을 일치시키고 결과로 전체 문자열을 반환한다는 생각으로이 정규식을 작성했습니다.정규식의 길이가 2 인 이유는 무엇입니까?

당근을 포함하는 [^] 문자 클래스는 아무것도 시작하지 않는 모든 문자의 일치를 묻습니다. *은 이것이 여러 번 발생한다고 말합니다.

그러나 내 결과는 전체 문자열과 두 번 일치합니다. 나는 1 개의 성냥을 기대한다. 뭐가 잘못 되었 니? 당신은 정규식 호출이 캡처 된 데이터 (전체 문자열)뿐만 아니라 발생하는 전체 문자열을 모두 반환을 의미합니다 (() 패턴 내부), 캡처하고있는

var regex = /([^]*)/; 
var someString = "blahdy blah blah"; 
var result; 

result = regex.exec(someString); 
//why does this have a length of 2? I expect only 1 containing the entire string 
console.log(result.length); 
console.log(result); 

fiddle

+0

나는이 일이 컴파일되는 것에 놀랐다. JS 일 이군. – FailedDev

+0

@FailedDev 브라우저에 오류 콘솔이 없으면 작동하지 않습니다. IE는 그 중 하나가 없다는 것을 알고있는 유일한 브라우저입니다. 'console.log'를'document.writeln'으로 바꾸십시오. –

+0

'.exec()'에 대한 문서를 읽어야합니다 : https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp/exec. 그것은 모두 거기에 설명되어 있습니다. '.match()'도 같은 방식으로 작동합니다. – jfriend00

답변

2

일치하는 정규식 (다시 전체 문자열).

+0

이것이 'exec()'의 일부 기능이라고 생각합니까? 그렇다면 임원은 전체 문자열이 설정된 일반적인 위치에 있습니까? 나는 이것이 항상 인덱스 0에 놓이는 것을 의미합니까? –

+2

그것은 내가 아는 모든 정규식 엔진의 기능입니다. 인덱스 0은 항상 일치를 야기한 문자열입니다. 인덱스 1+는 캡처 그룹입니다 (인덱스 1 = 첫 번째 캡처 그룹, 인덱스 2 = 두 번째 캡처 등). –

관련 문제