2015-10-20 69 views
2

如果我有一個包含>標誌A S特林,我怎麼使用正則表達式替換它,是從字符串中使用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")工作正常,但如何>添加到正則表達式,以便它是否行得通呢?

[PLAYGROUND AND DEMO]

再次,它必須可以通過指定正確的字符串到正則表達式構造器來完成。

+1

這聽起來像一個學校分配。爲什麼你必須用這種相當複雜的方式來做到這一點? –

+0

@pranav,嘗試在操場您的解決方案,它失敗 – kaytrance

回答

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>

+0

的感謝!優秀的答案!我已經將構造函數的字符串替換爲包含'>',並且它現在可以正常工作。 – kaytrance

+0

@ kaytrance歡迎!樂意效勞 :) – Tushar

0

你的問題是不是正則表達式,但調用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在他的評論中是正確的。

0

嘗試以下操作:

var msg = $("pre").html(); 

var s = "\\&gt;:\\)"; 
var reg = new RegExp(s); 

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

更新jsfiddle