我正在实现一个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”字符。为什么会这样?如何克服这个问题,请提出建议。
答案 0 :(得分:1)
查看here和here。 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 )而不是二进制字符。