在 javascript 中用正则表达式替换 '&' 字符

replace '&' character with reg exp in javascript

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

到目前为止我试过:

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,''));

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

我可以建议在 & 之前添加反斜杠字符至于 'escape' 使用 & 作为正则表达式字符。您希望正则表达式查找并替换任何文字 & 字符。

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

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

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

这样您就可以处理 && 两种情况。然后,如果您必须在 html 中附加该文本,您应该 _.escape 将其加回去以防止出现奇怪的副作用:_.escape(myText);.

没有 lodash 你可以在正则表达式中同时搜索:

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

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