我正在尝试用下面的字符串替换表情符号
function decoder(text, done) {
async.parallel([
function (cback) {
// Thanks to @CMS
var emoticons = window.symbols,
patterns = [],
metachars = /[[\]{}()*+?.\\|^$\-,&#\s]/g;
// build a regex pattern for each defined property
for (var i in emoticons) {
if (emoticons.hasOwnProperty(i)) { // escape metacharacters
patterns.push('(' + i.replace(metachars, "\\$&") + ')');
}
}
// build the regular expression and replace
text = text.replace(new RegExp(patterns.join('|'), 'g'), function (match) {
return typeof emoticons[match] != 'undefined' ?
"<img src='/" + emoticons[key] + "' />" : match;
});
cback(null, true);
},
function (cback) {
var ref = window.smileys,
keys = Object.keys(ref);
async.each(keys, function (key, cb) {
text = text.replace(new RegExp('[' + key + ']', 'gi'), "<img src='/" + ref[key] + "' />");
cb(null);
}, function () {
cback(null, true);
});
}], function (err, res) {
done(text);
});
}
但这会让网页崩溃。是否有任何特定的代码阻止此问题,而调试我已经观察到第二个功能是阻止它但无法理解为什么。表情总数为300.表情符号的格式为[Dancing]
,[Kidding]
和:)
等。
答案 0 :(得分:0)
而不是使用下面使用的正则表达式,这非常有效,感谢@James McLaughlin
text = text.split(smileySymbol).join(imgHTML);