2013-08-05 4 views
2

내가 사용하고 문자열 현재.replace

내 번호를 업데이트하기 위해 노력하고있어 :

savedJobsDiv.innerHTML = savedJobsDiv.innerHTML.replace(/.*\(|\)/gi, parseInt('$1')+1); 

는 (일부 내부 eberythign을 repalce하는) 브래킷 일치 값 +1,하지만 그것은 꽤 작동하지 않습니다, 내가 얻는 것은 NAN33NAN입니다. 33은 올바른 숫자이거나, 수학이 무엇이든간에 작동합니다.

어디서 잘못 가고 있습니까?

random string here (33) 

와 나는 괄호 안의 숫자에 +1 원하는 :

나의 시작 문자열은 당신이 일치하는 더 하위 그룹이 없기 때문에

random string here (34) 
+2

교체 및 원하는 결과 앞에 'savedJobsDiv.innerHTML'을 게시하십시오. – georg

+0

숫자가 항상 문자열 끝에 있으면 정규식이 필요합니까? – adeneo

답변

3

$1이 값이없는 것 당신의 패턴으로. $1은 대괄호 안에 표시된 첫 번째 그룹과 일치합니다 (대괄호는 있지만 리터럴 괄호와 일치합니다 - 패턴의 일부가 아니며 하위 그룹과 일치합니다).

이렇게 계산을 바꾸려면 콜백에 일치하는 것이 좋습니다. 사용 parseFloat

"random string here (33)".replace(/(\()([\d\.]+)(?=\))/g, function($0, $1, $2) { 
    //$0 == whole match; $1 == first bracket; $2 == number 
    return $1+(parseFloat($2)+1); 
}); // == "random string here (34)" 

때문에 바람직하고, 수레뿐만 아니라 전체 번호를 수 있지만 모두 작동합니다.

0
var newstr = "random string here (33)".replace(/\((\d+)\)$/,function(cap0,cap1) { 
    return '('+(parseFloat(cap1)+1)+')'; 
}); 
//newstr = "random string here (34)"