2015-01-27 1 views
0

정규 표현식 배열 (키)을 가지고 있고 표시 값을 변경하지 않고 정규 표현식과 일치하는 모든 문자열을 특정 색상으로 강조하고 싶습니다.자바 스크립트에서 정규 표현식과 일치시켜 문자열을 강조 표시된 문자열로 바꿉니다.

//sel_data is the blob of text to be processed 
    //keys is the array of regular expression 

    for (i=0;i<k.length;i++){ 
    var data=keys[i]; 

    var re = new RegExp(data,"g"); 

    //pat_data[keys[i]][0]["id"] is the corresponding value of the regular expression to be associated with the highlighted text. 

    var re_str="<em class='highlight' value="+ pat_data[keys[i]][0]["id"]+">"+"</em>" 
    var rep_data=sel_data.replace(re,re_str); 
    //alert (rep_data); 
    sel_data=rep_data; 
} 

이제 문제는 텍스트의 표시 텍스트를 정규 표현식 자체로 대체해야한다는 것입니다. 하지만 정규 표현식과 일치하는 모든 문자열이 표시 텍스트/값을 변경하지 않고 특정 색상과 해당 값으로 강조 표시되도록 (이 색상 및 값은 정규 표현식과 관련되어 저장됩니다.)

Ex. sel_data = "91.2 %"이고 정규 표현식이 '\ d +'이면 '91 .2 '를 강조 표시하고이 텍스트의 값 필드를 지정된 정규 표현식과 관련된 것으로 변경해야합니다.

일치하는 항목을 하나씩 가져 와서 처리 할 수 ​​있습니다 (ib 루비 완료). 그런 다음이를 처리하는 방법을 얻지는 못합니다.

아무도 나를 도울 수 있다면 좋을 것입니다. 미리 감사드립니다.

피씨 나는 자바 스크립트에 매우 익숙하다.

+0

나는 [이 항목은] [1] 당신이 무엇을 달성하고자하는 당신을 도울 수있다 생각합니다. [1] : http://stackoverflow.com/questions/28154276/how-to-replace-emoticons-yet-after-user-write-text-and-press-space –

답변

0

귀하의 질문을 올바르게 이해하길 바랍니다. 텍스트 노드/텍스트의 색상을 변경할 수 없습니다. 당신이 할 수있는 것은 일치를 요소로 대체하고이 요소에 특정 CSS 클래스를 부여하는 것입니다. 이 질문에 대한 답을 살펴보십시오.

Change the color of strings affected by regex on (document).ready