gpt4 book ai didi

javascript - 正则表达式将 & 转换为 &

转载 作者:行者123 更新时间:2023-11-29 10:14:56 26 4
gpt4 key购买 nike

我正在开发一个小型字符编码器生成器,用户可以在其中输入他们的文本,然后点击一个按钮,它就会输出编码后的版本。

我定义了一个需要编码的字符对象:

map = {
'©' : '©',
'&' : '&'
},

这是从 map 获取值并替换它们的循环:

Object.keys(map).forEach(function (ico) {
var icoE = ico.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
raw = raw.replace( new RegExp(icoE, 'g'), map[ico] );
});

我只是将结果输出到文本区域。这一切都很好,但我面临的问题是这个。

© 被替换为 © 但是其开头的 & 符号随后被转换为 & 所以它最终是 ©

我知道为什么会发生这种情况,但是我不确定如何确保 & 不会在字符编码字符串中被替换。

这是一个 JSFiddle,用于实时预览我的意思:

http://jsfiddle.net/4m3nw/1/

任何帮助将不胜感激

最佳答案

前言:除了正则表达式,一个值得考虑的想法是类似于this JS function。已经处理 html 实体。现在,关于正则表达式问题。

HTML 特殊字符,否定先行

在 HTML 中,特殊字符不仅可以看起来像 ©,还可以像 ,并且它们可以包含大写字符。

要替换没有紧跟哈希或单词字符和分号的&符号,您可以使用如下内容:

&(?!(?:#[0-9]+|[a-z]+);)

参见 demo .

  • 确保使用 i 标志激活不区分大小写模式
  • & 匹配文字 & 符号
  • 否定先行 (?!(?:#[0-9]+|[a-z]+);) 断言它后面没有...
  • (?:#[0-9]+|[a-z]+) 哈希和数字,| 或字母...
  • 然后是分号。

引用

关于javascript - 正则表达式将 & 转换为 &,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24323695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com