如果我的标记包含>
符号,如何使用正则表达式替换它,使用new RegExp()
从字符串构造?
var s = "\\>:\\)"; // this is definetely wrong string for regexp contructor
var reg = new RegExp(s, "g");
alert(msg.replace(reg, "IT WORKS!!");
替换:)
不是问题,new RegExp(":\\)","g")
工作正常,但如何将>
添加到regexp以便它可以正常工作?
同样,必须通过为RegExp构造函数指定正确的字符串来完成。
答案 0 :(得分:2)
问题在于html()
。 html()
将对字符串进行编码并返回
this is angry smile >:) how it looks?
^^^^
使用text
代替html
或使用正则表达式>
替换已编码的/>:\)/g
。
此外,无需转义>
。
var msg = $("pre").text();
var s = ">:\\)";
var reg = new RegExp(s, "g");
$("pre").html( msg.replace(reg, "IT WORKS!!") )

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<pre>this is angry smile >:) how it looks?</pre>
&#13;
答案 1 :(得分:0)
你的问题不是RegExp,而是调用html()。
我在这里有一个更新的jsfiddle:http://jsfiddle.net/sx8bxmnw/有效。
var msg = $("pre").text();
var s = ">:\\)";
var reg = new RegExp(s, "g");
$("pre").text( msg.replace(reg, "IT WORKS!!") )
要回答你原来的问题,Pranav C Balan的评论是正确的。
答案 2 :(得分:0)
请尝试以下操作:
var msg = $("pre").html();
var s = "\\>:\\)";
var reg = new RegExp(s);
$("pre").html( msg.replace(reg, "IT WORKS!!") )
更新jsfiddle