在Javascript中全部替换不起作用?

时间:2016-10-08 17:58:08

标签: javascript regex replace

我正在尝试使用Javascript替换字符串中的微笑,这是我的代码中的一行:

res = res.replace(/;\)/g, function myFunction(x){
                               return '<img src="/emoticons/wink.png" >'; 
                          });

它工作正常,当我发送;)时,它给了我微笑

但问题在于,当我发送');时,它也会起作用并给我同样的笑容

我的意思是当我发送例如Simplemessage('sometext');时,它会将其更改为example Simplemessage('sometext'{Smile};

1 个答案:

答案 0 :(得分:1)

请原谅这是多么混乱 - 但我向你们保证,这一点与你将会得到的一样好。

(?<!&#([0-46-9]\d|5[0-8]))(?<!&#\d{3})(?<!&[a-z]{2})(?<!&[a-z]{3})(?<!&[a-z]{4})(?<!&[a-z]{5})(?<!&[a-z]{6})(?<!&[a-z]{7})(?<!&[a-z]{8});\)

基本上,它确保)之前没有替代符号,例如&apos;&#39;,但&#59;的唯一情况除外,这是分号的符号(因此,应该工作。

由于它使用负面的lookbehind,我不得不(不幸的是)复制一段代码,因为它不能是可变长度。 html中最长的ascii实体是thetasym,长度为8个字符,因此我必须多次复制它。

示例:https://regex101.com/r/hkJ9yT/1

如果这个有效,请告诉我! (以及对Xufos的大量赞誉,以找出&apos;事物)