【问题标题】:javascript not recognizing special charactersjavascript无法识别特殊字符
【发布时间】:2016-01-09 00:52:41
【问题描述】:

我正在实现一个 javascript 代码,它使主题标签可链接如下 -

str2 = str.replace(/(^|\s)#([A-Za-z0-9é_ü]+)/gi, '$1<a href="https://www.facebook.com/hashtag/$2" class="msfb-wall-auto-link" target="_blank">#$2</a>'); 

如果您看到我在主题标签链接中包含了特殊的匈牙利字符,例如 é 、 ü ...,但上面的代码在这些特殊的匈牙利字符处中断。但是当我在 w3schools.com 示例代码编辑器中测试时,事情就在那里工作。所以在我的本地脚本文件中,这些特殊字符没有被识别为字符(é),但看起来它被视为“e”字符。为什么会这样?如何克服这个问题,请提出想法。

【问题讨论】:

标签: javascript html special-characters code-snippets


【解决方案1】:

herehere。 Javascript 在正则表达式中的 Unicode 存在一些问题。

如果你想匹配每个 Unicode 字母,你应该使用这个正则表达式[\u00C0-\u1FFF\u2C00-\uD7FF\w]

所以你的代码应该是这样的:

str2 = str.replace(/(^|\s)#([\u00C0-\u1FFF\u2C00-\uD7FF\w]+)/gi, '$1<a href="https://www.facebook.com/hashtag/$2" class="msfb-wall-auto-link" target="_blank">#$2</a>'); 

var str2 = 'abc #łążaf3234 efg'.replace(/(^|\s)#([\u00C0-\u1FFF\u2C00-\uD7FF\w]+)/gi, '$1<a href="https://www.facebook.com/hashtag/$2" class="msfb-wall-auto-link" target="_blank">#$2</a>'); 

alert(str2);

【讨论】:

  • 你们可以在我的代码中添加示例吗?有问题的理解。
  • 看起来您的代码可以正常工作,但您提供的链接我直到现在才得到。您的正则表达式代码是否也计算我在代码中提到的那些字符(A-Za-z0-9_)。有什么坏处吗??
  • 那里?请回答我上面的问题
  • @dev-m 您需要将0-9_ 添加到上述正则表达式中。我只是向你展示了如何匹配每个 unicode 字母。
【解决方案2】:

您必须列出特殊字符 [A-Za-z0-9éüíóþæöÉÚÍÓÞÆÖ](这些是冰岛字符),或者您可以使用 \S 匹配任何非空白字符

【讨论】:

  • 你们可以在我的代码中添加示例吗?有问题的理解。
  • 我不认为“é_ü”在正则表达式中有效,您必须列出匈牙利字母表中的每个特殊字符 [a-z0-9áéëéíóöúü] “/ig”中的“i”使这个 -区分大小写,因此您不必使用大写版本。这至少适用于冰岛语,
  • 即使我包含所有匈牙利字母,行为也与我在代码中提到的相同
  • 确保使用 utf-8 或 unicode 编码保存文件
【解决方案3】:

最好的办法是使用 unicode 转义序列(如 \u2665)而不是二进制字符。

【讨论】:

  • 向我解释为什么这是错误的。他的正则表达式工作输入在线表格,但如果他将脚本保存到本地文件中,宽字符会变成 8 位字符。使用像 \uXXXX 这样的 unicode 转义是解决方案。
  • 你的意思是像 \u2665 ??
猜你喜欢
  • 2018-02-10
  • 2020-12-18
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
  • 2021-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多