Javascript正则表达式与替换

标签 javascript regex expression

我正在开发一个关于搜索表情符号并用图标替换的项目 但我在正则表达式上遇到一些问题,下面提到的是我的代码供引用:

var f = ["( :3 )" , "( :P )","\(:star:\)"];

var re =  function(s){return new RegExp(s, 'g');};

现在,当我要搜索表情符号替换时,如下所示:

s = "hello :D how are you :P dwdwd";
for(var n in f){    

var m; 
if ((m = re(f[n]).exec(s)) !== null) {

m.forEach((match, groupIndex) => {
  s = s.replace(match,"<img src='http://abs.twimg.com/emoji/v1/72x72/"+ r[n] +".png'>");
});

}}

在这种情况下,它效果很好并取代了表情符号。但它仅在 emoji 前后有空格时才替换 我应该如何替换字符串开头或结尾的 emoji !

s = ":D hello how are you :)";

这个案例不起作用。我如何编辑我的正则表达式以便能够在字符串的开头和结尾替换emoji,同时如果它出现在字符串中间并且单词之间有空格和表情符号

我的正则表达式的第二个问题是“\(:star:\)”它永远不会替换。虽然它必须用 emoji 替换单词 :star: 但我想我错过了 正则表达式 的一些东西。

最佳答案

您可以使用开始和结束 anchor 以及管道来实现此目的。例如:

/(^:3\s)|(\s:3\s)|(\s:3$)/g

^ 是一个 anchor ,它将 :3\s 与字符串的开头匹配。

$ 是一个 anchor ,它将 \s:3 匹配到字符串的末尾。

\s 匹配空格。

| 是管道运算符,充当不同捕获组之间的逻辑 OR 运算符。

关于Javascript正则表达式与替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42485857/

相关文章:

regex - 为什么我的非贪婪 Perl 正则表达式不匹配?

javascript - 如何创建 JavaScript 正则表达式来验证带有扩展名的国际电话号码

regex - 扩展的正则表达式 - 认为我的搜索可能过于严格但不确定

javascript - Handsontable getValue() 函数表达式中的 HOT-in-HOT 动态 Handsontable

c++ - 正则表达式和无效的空指针表达式

Javascript对象继承和异步

javascript - 使用 ECMAscripts "bracket notation"访问对象属性有什么缺点吗?

javascript - 使用 Jquery 将 Iframe 插入到类中

javascript - 如何在 .submit() 之后重新加载页面

regex - 将错误重定向替换为 Bash 脚本中的空设备并创建一个新文件