2012-12-16 5 views
1

배열 replaceThis은 사용자가 생성하므로 상수 정규식 규칙을 쓸 수 없습니다.
하지만 어떻게 정규식 규칙을 만들 수 있습니까?
멋진 솔루션에 대한 아이디어가 있습니까?Javascript/Jquery - Regex의 변수

var replaceThis = new Array(); 
replaceThis[0] = ':)'; 
replaceThis[1] = 'XD'; 
replaceThis[2] = '-.-'; 
replaceThis[3] = 'hello world'; 
replaceThis[3] = ' a ';   
replaceThis[3] = ' B ';     

var message = 'text text :) text text -.- and hello world XD and text a btext B text text'; 
$.each(replaceThis, function(i) 
{ 
    var regex = new RegExp (" ??? ","gi"); 
    message = message.replace(regex,'<span class="blue">'+????+'</span>'); 
}); 

$('body').append(message+'<hr/>'); 

놀이터 : 사전에http://jsfiddle.net/s7b3r/2/

감사합니다!
제이미

+0

당신은 무엇을 어떻게해야합니까 :

String.prototype.escapeRegExp = function() { return this.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1"); } 

는 그 다음 원하는 사용할 수 있습니까? 해당 문자열을 ''에 넣으시겠습니까? – MaxArt

+0

그래서 새로운 RegExp ("(:))", "gi")'가 깨지지 않도록 정규 표현식을 벗어나야합니까? –

+0

@Salman correct;) – user1815934

답변

4

Check the working DEMO.

정규식의 특수 문자를 이스케이프 처리해야합니다.

$.each(replaceThis, function(i, data){ 
    var regex = new RegExp(data.escapeRegExp(),"gi"); 
    message = message.replace(regex, '<span class="blue">$&</span>'); 
}); 
+0

대단히 감사합니다! 좋은데 :) – user1815934

관련 문제