Вы ищете «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>");
равно спасибо :)
является 'вар f1 = XY + X'Y' должен быть' вар f1 = "XY + X'Y "'? –