Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-为什么它会两次替换该值?_Javascript_Jquery - Fatal编程技术网

Javascript jQuery-为什么它会两次替换该值?

Javascript jQuery-为什么它会两次替换该值?,javascript,jquery,Javascript,Jquery,我需要将“:”转换为字符串中的微笑图像。用这个, var post = "hello :)"; post = post.replace(/[:)]/g, "<img src='smile.png' \>"); var post=“你好:)”; post=post.replace(/[:)]/g,“”; 然而,输出是有限的 Hello <img src='smile.png' \> <img src='smile.png' \> 你好 如何防止错误更换?

我需要将“:”转换为字符串中的微笑图像。用这个,

var post = "hello :)";
post = post.replace(/[:)]/g, "<img src='smile.png' \>");
var post=“你好:)”;
post=post.replace(/[:)]/g,“”;
然而,输出是有限的

Hello <img src='smile.png' \> <img src='smile.png' \>
你好 如何防止错误更换?

尝试以下方法:

var post = "hello :)";

post = post.replace(
    /[:)]/g,
    "<img src='smile.png' \>"
).once();
var post=“你好:)”;
post=post.replace(
/[:)]/g,
""
).一次();

它正在匹配
并逐个替换它们

成功

post = post.replace(/(:\))/g, "<img src='smile.png' \/>");
post=post.replace(/(:\)/g,”;
像这样试试

var post=“你好:)”;
post=post.replace(/(:\)/,“”);
console.log(post)
试试这个

    var post = "hello :)";
    post = post.replace(/(:\))/g, "<img src='smile.png' \>");
var post=“你好:)”;
post=post.replace(/(:\)/g,“”);

如果字符串包含“Hello:)你好吗:)”?呃,甚至不起作用-
post.replace
将返回一个已经存在的字符串。var s=“Hello:)world:)“var post=s.replace(“:”,“您的代码在这里”);警报(post);控制台日志(post);这将只替换第一个“:”由于它只替换了一个,所以有了非常轻微的改进,但与OP的问题相同。但是自动关闭img标记“/>”也被替换。@SudharsanS不,反斜杠只需要自己转义,因为它试图转义
>
.Img标记是dom元素,所以它以单斜杠结束,而不像双斜杠that@SudharsanS是的,在发布我的评论后意识到了这一点。现在修好了我想知道是什么问题,现在就看修好了:)谢谢。