2015-01-29 4 views
-1

왜이 수행합니다자바 스크립트 정규식 캡처

apple:8080,8080 

내가 원하는 모든 8080입니다 :

var string = "apple:8080"; 
var reg = /\w*:(\d*)/; 
console.log(reg.exec(string).toString()); 

이를 생산하고 있습니다. apple:이 출력되는 이유를 모르겠습니다. 콜론 다음에 번호를 알아야 겠어.

답변

1

특정 색인에 저장된 문자열을 얻으려면 그룹 색인 번호를 순서대로 지정해야합니다. 기본적으로 .exec 함수는 일치 항목과 캡처 항목을 모두 출력합니다. 그래서 당신은 과 일치하고 8080 캡쳐합니다. 에서의 경우 하나 이상의 문자열의 루프가 일치 동안

여분을 추가 업데이트

> var string = "apple:8080"; 
> var reg = /\w*:(\d*)/; 
> console.log(reg.exec(string)[1].toString()); 
8080 

.

var re = /\w*:(\d*)/g; 
var str = 'apple:8080 orange:8000'; 
var m; 
while ((m = re.exec(str)) != null) { 
    console.log(m[1]); 
} 

출력 : 단어 :

8080 
8000 
+0

좋아,하지만 문자열이 여러 개있는 경우 "\ D + \ + w". 매치마다 캡쳐에 어떻게 액세스합니까? – fvrghl

+0

내 업데이트 참조 ... –