2012-04-17 5 views
1

변수 str'<span class="red">str'</span>으로 바꾸고 싶습니다. 그러나 항상 범위 바깥에 "'"가 표시됩니다. 나는 다음과 같은 자바 스크립트 썼다 :RegExp - 견적을 대체하지 않습니다.

var f1="XY+X'Y"; 
var str=X; 
var patt=new RegExp(str+'\'',"g"); 
f1.replace(patt, "<span class=\"red\">"+str+"'"+"</span>") 

를 내가 얻을 :

<span class="red">X</span>'; 

내가 원하는 : 나는

var f1="XY+X'Y"; 
var str="X"; 
var patt=new RegExp(str+'\'',"g"); 
f1.replace(patt, "<span class=\"red\">"+str+"'"+"</span>") 

을 평가

<span class="red">X'</span>; 
+1

입니다'var에 F1 = XY + X'Y''있어야 VAR F1 = "XY + X'Y "'? –

답변

0

정규 표현식에서 "X '"을 (를) 찾고 <span ...>X''</span>으로 바꿉니다. 코드에 몇 가지 문제가있는 것으로 보입니다. 주어진 코드에서 결과 (얻을 수있는 코드 또는 원하는 코드)를 얻는 방법을 확신하지 못합니다. 이 대안을 제안해도 될까요?

var f1="XY+X'Y"; 
var str="X"; 
var patt=new RegExp(str+"\'?","g"); 
f1.replace(patt, "<span class=\"red\">$&</span>") 

이 찾아 X 또는 소스의 X '와 빨간색 클래스 범위와 그것을 둘러싸고있는 것입니다. X '만 강조 표시하려면 patt 변수에서 ?을 꺼내십시오 (?는 아포스트로피를 선택 사항로 만듭니다).

편집 :

Soluction :

문제는 내가 같은 문자열에 두 번 대신 사용하는 것이이었다

. 이

var str =f1.replace(patt, "<span class=\"red\">"+str+"</span>").f1.replace(patt, "<span class=\"red\">"+str+"'"+"</span>") 

이런 식으로 뭔가 나를 위해 작동합니다

var str =f1.replace(patt, "<span class=\"red\">"+str+"</span>"); 
var str2=str.replace(patt, "<span class=\"red\">"+str+"'"+"</span>"); 

어쨌든 고맙습니다 :)

2

내가

를 얻을 수
"XY+<span class="red">X'</span>Y" 

나는 당신이 의도 한 결과라고 생각합니까? 어쩌면 따옴표/문자열 변수를 다시 확인해야 할 필요가 있을까요?

관련 문제