我有以下 JavaScript 代码。
var emoticons = {
':)': '<span class="emoticon emoticon_smile"></span>',
':-)': '<span class="emoticon emoticon_smile"></span>',
':(': '<span class="emoticon emoticon_sad"></span>',
':d': '<span class="emoticon emoticon_bigSmile"></span>',
':D': '<span class="emoticon emoticon_bigSmile"></span>'
}
现在要用给定文本中的跨度替换情感,我正在使用以下函数
function Emotions (text) {
if (text == null || text == undefined || text == "") return;
var pattern = /[:\-)(D/pPy@'*]+/gi;
return text.replace(pattern, function (match) {
return typeof emoticons[match] != 'undefined' ?
emoticons[match] :
match;
});
}
现在上面的代码工作正常。如果我按如下方式在函数中传递文本
Emotions("Hey this is a test :( :(");
查看两个情感 Angular 色之间的空间。 但是,如果我删除了两种情绪之间的空间,那么它就不起作用了。如下所示
Emotions("Hey this is a test :(:(");
我的正则表达式有问题,但我无法弄清楚。
最佳答案
/:-?[()pPdD]/gi
[]括号内的字符是可能的,按顺序剩余
关于javascript - 使用正则表达式替换javascript中的情绪字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24221175/