我正在尝试使用Javascript替换字符串中的微笑,这是我的代码中的一行:
res = res.replace(/;\)/g, function myFunction(x){
return '<img src="/emoticons/wink.png" >';
});
它工作正常,当我发送;)
时,它给了我微笑
但问题在于,当我发送');
时,它也会起作用并给我同样的笑容
我的意思是当我发送例如Simplemessage('sometext');
时,它会将其更改为example Simplemessage('sometext'{Smile};
答案 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});\)
基本上,它确保)
之前没有替代符号,例如'
或'
,但;
的唯一情况除外,这是分号的符号(因此,应该工作。
由于它使用负面的lookbehind,我不得不(不幸的是)复制一段代码,因为它不能是可变长度。 html中最长的ascii实体是thetasym
,长度为8个字符,因此我必须多次复制它。
示例:https://regex101.com/r/hkJ9yT/1
如果这个有效,请告诉我! (以及对Xufos的大量赞誉,以找出'
事物)