2017-11-02 10 views
0
function replaceKeys(inputString, keys){ 

    for (var i = 0; i < keys.length; i++) { 
       var t = keys[i]; 
       if (t) inputString= inputString.replace(new RegExp(t, 'gi'), '<strong>' + t + '</strong>'); 
      } 
      return s; 
} 

위의 자바 스크립트 메서드를 사용하면 "키"또는 문자열 부분 목록을 기반으로 지정된 문자열의 모든 텍스트를 굵게 표시하려고했습니다.자바 스크립트에서 이전 굵은 문자열을 재정의하지 않고 여러 문자열을 굵은 텍스트로 바꾸려면 어떻게해야합니까?

예 인풋 =
키 [ "사람", "STR"] inputString = "강한 사람"
의도 출력 :
STR 사람

불행히도 출력은 강력한 태그의 "str"부분을 대체합니다. 출력을 의미하는 것은 사람

< STR 강력한 사연>STR에게>가된다.
문자열에서 html 태그를 무시할 수 있도록 정규 표현식이나 다른 방법이 있습니까? 이렇게하면 이상한 동작이 없습니까?

답변

0

당신은 자리를 정의하는 대신 직접 <strong> 태그를 사용하여이 작업을 수행 할 수 있습니다 :

function replaceKeys(inputString, keys){ 
    var placeholder = '!!'; 
    var s = inputString.replace(new RegExp(/strong>/gi),placeholder); 
    for (var i = 0; i < keys.length; i++) { 
       var t = keys[i]; 
       if (t) s = s.replace(new RegExp(t, 'gi'), '<' + placeholder + t + '</' + placeholder); 
      } 
      return s.replace(new RegExp(placeholder,'g'),'strong>'); 
} 
replaceKeys("strong man",["man", "str"]); 
+0

가 감사합니다 !!!! 매력을 발휘했습니다! –