来自字符串的RegExp:替换“大于”符号

时间:2015-10-20 06:21:52

标签: javascript regex

如果我的标记包含>符号,如何使用正则表达式替换它,使用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以便它可以正常工作?

[PLAYGROUND AND DEMO]

同样,必须通过为RegExp构造函数指定正确的字符串来完成。

3 个答案:

答案 0 :(得分:2)

问题在于html()html()将对字符串进行编码并返回

this is angry smile >:) how it looks?
                    ^^^^

使用text代替html或使用正则表达式>替换已编码的/>:\)/g

此外,无需转义>

Demo



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;
&#13;
&#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 = "\\&gt;:\\)";
var reg = new RegExp(s);

$("pre").html( msg.replace(reg, "IT WORKS!!") )

更新jsfiddle