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