Javascript正则表达式用表情符号替换文本

Javascript正则表达式用表情符号替换文本,javascript,regex,replace,Javascript,Regex,Replace,我需要替换文本,如;)或:p通过表情符号,但我无法创建正则表达式来检测这一点。现在我只能像:wink: function replaceEmoticons(text) { var emots = { ";)": "wink", ":)": "xxx", ":p": "xxx", }; return text.replace(/:(.*?):/g, function (match) { return typeof emots[match] != '

我需要替换文本,如
;)
:p
通过表情符号,但我无法创建正则表达式来检测这一点。现在我只能像
:wink:

function replaceEmoticons(text) {
  var emots = {
    ";)": "wink",
    ":)": "xxx",
    ":p": "xxx", 

  };

  return text.replace(/:(.*?):/g, function (match) {
    return typeof emots[match] != 'undefined' ?
           '<img src="http://localhost:8080/'+emots[match]+'.png"/>' :
           match;
  });
}
函数替换表情(文本){
变量emots={
“;)”:“眨眼”,
“:)”:“xxx”,
“:p”:“xxx”,
};
返回文本。替换(/:(.*):/g,函数(匹配){
返回emots[match]的类型!=“未定义”?
'' :
匹配;
});
}

什么是好的正则表达式?

此函数获取一个字符串并返回一个字符串,其中包含
emots
对象中找到的所有替换项

function replaceText(text) {
  var emots = {
    ";)": "wink",
    ":)": "xxx",
    ":p": "xxx", 
  };

  for(var key in emots){
    if(emots.hasOwnProperty(key)){
      text = text.replace(new RegExp(escapeRegExp(key), 'g'), '<img src="http://localhost:8080/' + emots[key] + '.png"/>');
    }
  }
  return text;
}

function escapeRegExp(str) {
  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
函数替换文本(text){
变量emots={
“;)”:“眨眼”,
“:)”:“xxx”,
“:p”:“xxx”,
};
for(emots中的var键){
if(emots.hasOwnProperty(键)){
text=text.replace(新的RegExp(escapeRegExp(键),'g'),'';
}
}
返回文本;
}
函数escapeRegExp(str){
返回str.replace(/[\-\[\]\/\{\\}(\)\*\+\?\.\\\^\$\\\\\\\\\\;]/g,“\$&”);
}

尝试以下操作。但是,在生成正则表达式时,应转义微笑中的特殊字符(和)

//用于转义正则表达式中特殊字符的helper函数

function RegExpEscape(text) {
    return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); 
}

function replaceEmoticons(text) {   
    var emoticons = {
        ':)'         : 'smile.gif',
        ':('         : 'sad.gif',
        ';)'         : 'wink.gif'


    }

    var result = text;
    var emotcode;
    var regex;

    for (emotcode in emoticons)
    {
        regex = new RegExp(RegExpEscape(emotcode), 'gi');
        result = result.replace(regex, function(match) {
            var pic = emots[match.toLowerCase()];

            if (pic != undefined) {
                return '<img src="' + pic + '"/>';
                    } else {
                return match;
                    }
                });
    }

    return result;    
}
函数RegExpEscape(文本){
返回text.replace(/[-[\]{}()*+?,\\^$\\s]/g,“\\$&”);
}
函数替换表情(文本){
变量表情={
“:)”:“smile.gif”,
':(':'sad.gif',
“;)”:“wink.gif”
}
var结果=文本;
变量emotcode;
var regex;
for(表情符号中的表情代码)
{
regex=newregexp(RegExpEscape(emotcode),'gi');
结果=结果.替换(正则表达式,函数(匹配){
var pic=emots[match.toLowerCase()];
如果(图!=未定义){
返回“”;
}否则{
复赛;
}
});
}
返回结果;
}
我修改并提供了一个示例

//官方Twitch机器人表情:https://twitchemotes.com
变量表情={
“:)”:“ebf60cd72f7aa600”,
':(':'d570c4b3b8d8fc4d',
“:o”:“ae4e17f5b9624e2f”,
“:z”:“b9cbb6884788aa62”,
‘B’‘2cde79cfe74c6169’,
“:\ \”:“374120835234cb29”,
“;)”:“3407bf911ad2fd4a”,
“;p”:“3407bf911ad2fd4a”,
“:p':“e838e5e34d9f240c”,
‘R’‘0536d670860bf733’,
‘o_o’:‘8e128fa8dc1de29c’,
“:D”:“9f2ac5d4b53913d7”,
“>(”:“d31223e81104544a”,

'为什么你首先需要一个正则表达式?只需执行
yourString.replaceAll(“:wink:,winkSource)
对不起,我编辑了我的帖子,我需要用wink.png替换所有数组示例
;)
,或者用smile替换
:)
。png@Bálint我很确定String的原型上没有“replaceAll”…@Miky,你能添加一个示例性的输入字符串(文本)吗?