2012-04-17 4 views
1

Я хотел бы заменить переменную str' на <span class="red">str'</span>, но я всегда получаю "'" вне диапазона. Я написал следующий JavaScript: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>'; 

Я хочу:

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

является 'вар f1 = XY + X'Y' должен быть' вар 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 (параметр «делает апостроф необязательным»).

Edit:

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

Когда я оцениваю

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

Я получаю

"XY+<span class="red">X'</span>Y" 

Какой, по вашему мнению, ваш предполагаемый результат? Возможно, вам просто нужно дважды проверить свои кавычки/строковые переменные?

Смежные вопросы