2011-01-16 4 views
2

I가 다음 문자열 : 이 간단한 JavaScript 코드의 문제점은 무엇입니까?

output[0] = 1-$500.00 
output[1] = 2-$20.00 

그래서 나는이 시도 :

var output = '(1-$500.00)(2-$20.00)'; 
var pattern = "/\\)\\(|\\(|\\)?/"; 

output = output.split(pattern); 

alert(output); 

를하지만 내가 값을 다음과 같이 찾고 배열로 돌려 원하는

(1-$500.00)(2-$20.00) 

그냥 원래 문자열을 알리고 작업을 완료하지 않습니다. 내 정규 표현식이나 split 함수를 사용하는 방식에 문제가 있습니까?

답변

3

정규 표현식을 인용 할 필요는 없습니다.

var pattern = /\)\(|\(|\)/; 

는 내용이 예상되는 형식 (확인) 다음 확인하고 선두를 방지하고 빈 항목을 종료, 나는 RegExp.exec 대신 String.split 사용하는 거라고합니다.

function my_split(input) { 
    var pattern = /\((\d+-\$\d+\.\d+)\)/g; 
    var output = []; 
    while((m = pattern.exec(input))) 
    output.push(m[1]); 
    return output; 
} 
나를 위해 작동하지 않습니다
+0

- (http://writecodeonline.com/javascript/를 사용하여 테스트) 단일 문자 입력 – schnaader

+0

가 작동하는 것 같다 분할 (http://jsfiddle.net/XE6pQ/)하지만 결과에는 첫 번째 색인과 마지막 색인 모두에 빈 문자열이 포함됩니다. – polarblau

+0

@polar :'.split'을 사용하면 피할 수 없습니다. '.exec'을 사용하여 처음에 빈 내용을 피하는 방법은 update를 참조하십시오. – kennytm

관련 문제