我有這個數組,每個emo路徑都有emo符號和相關的圖像文件。Javascript正則表達式來匹配我的數組中的表情符號
Working demo of my code on JSFIDDLE
但是使用這個代碼,只有:)這EMO返回正確的smile.png形象,但情緒的休息不工作。
如何編寫符合每個符號的正確正則表達式併爲每個emo選擇適當的文件?
//Replace Emo with images
function replaceEmoticons(text) {
var emoticons = {
':)' : 'smile.png',
':)' : 'smile.png',
':D' : 'laugh.png',
':->' : 'laugh.png',
':d' : 'laugh-sm.png',
':-)': 'smile-simple.png',
':p': 'tounge.png',
':P': 'tounge-lg.png',
': P': 'tng1.png',
'>-)': 'evil.png',
':(': 'sad.png',
':-(': 'sadd.png',
':-<': 'sadd.png',
':-O': 'surprise.png',
':O': 'sur2.png',
':o': 'sur3.png',
':-o': 'sur3.png',
':-*': 'kiss.png',
':*': 'kiss.png',
':[email protected]': 'angry.png',
':@': 'angry.png',
':$': 'con2.png',
':-$': 'con1.png',
'O.o': 'con2.png',
'o.O': 'con2.png',
':/': 'weird.png',
':x': 'x.png',
':X': 'x.png',
':!': 's.png',
'(:I': 'egg.png',
'^.^': 'kit.png',
'^_^': 'kit.png',
';)': 'wink.png',
';-)': 'wink.png',
":')": 'hc.png',
":'(": 'cry.png',
"|-O": 'yawn.png',
"-_-": 'poke.png',
":|": 'p1.png',
"$_$": 'he.png'
}, url = "images/emo/";
// a simple regex to match the characters used in the emoticons
return text.replace(/[:\-)D]+/g, function (match) {
return typeof emoticons[match] != 'undefined' ?
'<img class="emo" src="'+url+emoticons[match]+'"/>' :
match;
});
}
replaceEmoticons("Hi this is a test string :) with all :P emos working :D");
選中此[http://stackoverflow.com/questions/28077049/regex-matching-emoticons](http ://stackoverflow.com/questions/28077049/regex-matching-)[http://stackoverflow.com/questions/7317299/regex-matching-list-of-emoticons-of-various-type](http: stackoverflow.com/questions/7317299/regex-matching-list-of-emoticons-of-various-type) –