用javascript中的reg exp替换'&'字符

时间:2018-10-19 14:28:24

标签: javascript regex replace special-characters

我想替换“&”字符以及可能会干扰网址语法的字符。

到目前为止,我尝试过:

myText = myText.replace(/[^a-zA-Z0-9-. ]/g,'');

可能适用于其他字符(未测试),但不理解我最关心的“&”,因此我在组合中添加了以下行,但也没有摆脱掉&:

myText = myText.replace(/&/g,'');

但都不起作用,如何替换这个特殊字符?

解决方案:

代码在交付时正在读取&,而不是&,所以我必须这样做:

myText = myText.replace(/&/g,'');

它有效。

片段:

var text = "god & damn it";
console.log(text.replace(/&|&/g,''));

2 个答案:

答案 0 :(得分:0)

console.log("m&yText".replace(/\&/g,''))

我建议使用&作为正则表达式字符,在&之前添加反斜杠字符以“转义”。您希望正则表达式查找并替换任何文字和字符。

答案 1 :(得分:0)

根据您的评论,您要替换的是这个&字符的html编码&

使用lodash ,您可以_.unescape替换之前的字符串:

myText = _.unescape(myText).replace(/&/g, '');

通过这种方式,您可以处理&&的情况。然后,如果您必须将该文本附加到html中,则应该_.escape将其返回,以防止产生怪异的副作用:_.escape(myText);

不带破折号,您只需在正则表达式中进行搜索即可

myText = myText.replace(/&|&/g, '');

但是,当存在其他特殊字符时,此方法可能会有副作用,因为它也删除了&字符,例如,字符串"Three is > than two & one"最终看起来像"Three is gt; than two one"(注意中间的丑陋 gt;