2013-07-29 3 views
0

regexp의 3 부분을 받으려고하지만 문자열이 정규 표현식과 완전히 동일하지 않으면 오류 을 반환합니다. I 한 시도 정규식의 각 부분을 수신 할 수있는 방법 정규 표현식 - 정수 부분을 찾는 방법은 무엇입니까?

I는 DA [1]의 경우의 STR == +7 및 DA [2]의 경우의 STR == +7 (922)를 오류없이 수신 할 수있는 방법

var str = this.value; 
var da = str.match(/(\+7)(\d{3})(\d{3})/); 
var newStr = da[1] + "(" + da[2] + ")" + da[3]; 

?

답변

2

당신은 그것을 선택하게 ?와 두 번째 캡처 그룹을 따를 수 :

var da = str.match(/(\+7)(\d{3})?/); 
// -----------------------------^ 

그런 다음 문자열 "+7"을 위해, 경기는 da[1]+7 것, 성공, 그리고 da[2]undefined 될 것입니다.

업데이트 : 마찬가지로 세 번째 캡처 그룹의 경우 질문에 추가했습니다. :-)

+1

나는이 코멘트를 좋아한다. 명확성을 위해 +1 – raam86