我试图用Javascript替换字符串中的微笑,这是我代码中的一行:
res = res.replace(/;)/g, function myFunction(x){
return '<img src="/emoticons/wink.png" >';
});
它工作得很好,当我发送;)
时,它给了我一个微笑
但问题是,当我发送');
时,它也可以工作,并给我相同的微笑
我的意思是当我发送例如Simplemessage('sometext');
时它会将其更改为example Simplemessage('sometext'{Smile};
请原谅这有多乱——但我向你保证,这是你能得到的最好的了。
(?<!&#([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});)
基本上,它确保)
前面没有一个替代符号,如'
或'
,除了;
的唯一情况,它是分号的符号(因此,应该工作。
由于它使用负向后看,我不得不(不幸地)复制一段代码,因为它不能是可变长度的。html中最长的ascii实体是thetasym
,它有8个字符长,所以我必须复制那么多次。
示例:https://regex101.com/r/hkJ9yT/1
让我知道这个是否有效!(对Xufos想出'
的东西表示极大的赞赏)