2010-07-05 4 views
0

JS regex에서 'find'로 문자열을 어떻게 사용할 수 있습니까?JavaScript 정규식을 사용하는 정규식?

즉 :

var find = ["a", "b", "c"]; 
var string = "abcdefghijkl"; 

지금, 내가 정규식을 사용하여 빈 문자열 (" ")을 발견 배열의 모든 요소를 ​​교체합니다. 어떻게해야합니까?

루프에 .replace(/find[i]/g, "")을 사용하면 작동하지 않습니다.

어떻게 할 수 있습니까?

감사합니다.

답변

3

내장 된 RegExp 개체를 사용하여 regex를 동적으로 만들 수 있습니다.

var find = ["a", "b", "c"]; 
var re = new RegExp(find.join("|"), "g"); // <- /a|b|c/g 
var string = "abcdefghijkl"; 

string = string.replace(re, ""); 

alert(string); // <- defghijkl 
​ 
+0

포장을 사용할 필요가 없습니다 여기에 괄호 - 단지'정규식 (find.join를 ("|"))'잘 작동합니다. –

+0

그래, 고마워. 그냥 너무 빨리 입력했다. – galambalazs

+1

이 간단한 배열 내용에 대해서는 작동하지만, 항목에 정규식 문자가 포함되지 않은 경우 이스케이프 처리하지 않으면 버그가 발생한다. –

0

왜 돈 (그들은 그을음 ​​표현에 concatentate 단지 너무 복잡한 경우 exampe을 위해) 한 번에 표현의 하나를 실행해야 할 경우 그냥

.replace(find[i], "*") 
+0

처음 나타나는 경우에만 작동합니다. – Rohan

0

를 사용하여 T, 당신 이 같은 루프에서 정규 표현식 개체를 만들 :

var find = ["a", "b", "c"]; 
var string = "abcdefghijkl"; 

for (var i = 0; i < find.length; i++) { 
    var re = new Regexp(find[i], "g"); 
    string = string.replace(re, ""); 
} 
관련 문제