javascript无法识别特殊字符

时间:2016-01-08 16:31:39

标签: javascript html special-characters code-snippets

我正在实现一个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”字符。为什么会这样?如何克服这个问题,请提出建议。

3 个答案:

答案 0 :(得分:1)

查看herehere。 Javascript在regexp中存在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);

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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