Мне нужно создать функцию, которая позволит мне анализировать текст в поисках совпадения для строки смайлика в другом формате. Это может быть смайлик типа :)
или тип <dog>
(<dog>
).
В настоящее время моя функция может найти оба типа, но для этой задачи нужны два разных регулярных выражения, и я хотел бы сделать это всего за один шаг. Есть идеи?
Живой пример на jsfiddle: http://jsfiddle.net/rmQSx/5/
и код:
function replaceEmoticons(text) {
var emots1 = {
':)': 'smile.gif',
':(': 'sad.gif',
},
emots2 = {
'<dog>': 'dog.gif',
'<fly>': 'fly.gif'
},
regex1,regex2,p,re;
for(p in emots1){
regex1 = "["+p+"]{2}";
re = new RegExp(regex1, "g");
text = text.replace(re, function (match) {
return typeof emots1[match] != 'undefined' ?
'<img src="'+emots1[match]+'"/>' :
match;
});
}
for(p in emots2){
regex2 = "("+p+")(|$)";
re = new RegExp(regex2, "g");
text = text.replace(re, function(match) {
return typeof emots2[match] != 'undefined' ?
'<img src="'+emots2[match]+'"/>' :
match;
});
}
return text;
}
console.log(replaceEmoticons('this is <dog>b a<fly> simple test :) , ;) and more:):('));