2017-06-09 84 views
-3

我的输入是 var email =“xyz + wex + rr%40gmail.com”;使用正则表达式替换Javascript中的字符串

我需要输出

XYZ WEX RR @ gmail.com

我试图与这下面的正则表达式,我只能从我的字符串中删除+如何与替换%4015

email .replace(/ +/g,“”);

+1

你必须转义像'+'这样的正则表达式中具有特殊含义的字符。试试'/ \ +/g' – Rajesh

+0

只需用“\%40”作为替换的搜索字符串运行另一个替换。 – DocWeird

+0

看看这个https://stackoverflow.com/a/20247435/2329980 –

回答

1

这里需要溶液,

email.replace(/\+/g, " ").replace(/\%40/g, "@")

var email = "xyz+wex+rr%40gmail.com"; 
 
console.log(email.replace(/\+/g, " ").replace(/\%40/g, "@"))

结果:xyz wex [email protected]

请运行上述片断

1

可以使用UNESCAPE功能来第一UNESCAPE串并比

更换+试试这个

var email = unescape("xyz+wex+rr%40gmail.com").replace(/[+]/g, " "); 
 
console.log(email)

正如@Florian阿尔布雷希特说,unescape已被弃用,从而已弃用Florian的回答较好

+0

unescape已弃用:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape –

+0

thanks for分享 –

2

var email = "xyz+wex+rr%40gmail.com"; 
 
email = decodeURIComponent(email).replace(/\+/g, " "); 
 
console.log(email);

decodeURIComponent解码之类的东西40%。它只是不会用空格替换+标志,所以这是通过RegEx完成的,转义加号在RegEx中具有特殊含义。