用JavaScript解析表情符号
我有一个用JavaScript解析表情符号,javascript,regex,Javascript,Regex,我有一个textarea作为注释框,还有一个div显示注释的渲染预览。我希望能够解析表情符号,并在预览区域将其渲染为图像 使用下面的代码,一些表情符号可以工作,而其他的则不行。不起作用的是:angel,arrow,at,:-],:-?,B-,B),;),感叹号,您需要向正则表达式添加更多捕获组: msg.replace(/(\:\)|\:-\)|\:D|\:-D|\blol\b|\:-\||\:-\(|\;-\)|angel|arrow)/g --------------------------
textarea
作为注释框,还有一个div
显示注释的渲染预览。我希望能够解析表情符号,并在预览区域将其渲染为图像
使用下面的代码,一些表情符号可以工作,而其他的则不行。不起作用的是:
angel,arrow,at,:-],:-?,B-,B),;),感叹号,您需要向正则表达式添加更多捕获组:
msg.replace(/(\:\)|\:-\)|\:D|\:-D|\blol\b|\:-\||\:-\(|\;-\)|angel|arrow)/g
-----------------------------------------------------------^ here
每个由|
管道|
分隔的项目都可能与msg.replace()
匹配。向smileys
对象添加更多项时,还必须向正则表达式添加更多组
您可以这样做以避免:
function smilyMe(msg) {
msg = msg.replace(/(?:\r\n|\r|\n)/g, '<br />');
for (var key in smileys) {
msg = msg.replace(key, smileys[key]);
}
return msg;
}
函数smilyMe(msg){
msg=msg.replace(/(?:\r\n |\r |\n)/g,“
”);
for(smileys中的var键){
msg=msg.replace(key,smileys[key]);
}
返回味精;
}
编辑:以上实现为您提供了一个解决方案。使用for在对象中循环使用笑脸,这样您只需定义一次。
以下是代码的工作示例:
function smilyMe(msg) {
msg = msg.replace(/(?:\r\n|\r|\n)/g, '<br />');
for (var key in smileys) {
msg = msg.replace(key, smileys[key]);
}
return msg;
}
function smilyMe(msg) {
for (var key in smileys) {
var match = new RegExp(key.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), "g");
msg = msg.replace(match, smileys[key]);
}
return msg
}