在两个引号之间替换字符串

3

我想把一个字符串 str = "hello, my name is \"michael\", what's your's?" 转换成 "hello, my name is <span class="name">michael</span>

我应该如何在javascript中实现呢?我知道如何使用 str.replace(),但是我如何获取所选内容/替换后的内容呢。

谢谢!!!

2个回答

8
str = "hello, my name is \"michael\", my friend's is \"bob\". what's yours?";
str.replace(/"([^"]+)"/g, '<span class="name">$1</span>');

输出:

hello, my name is <span class="name">michael</span>, my friend's is <span class="name">bob</span>. what's your's?

哦,我一直想知道$1是什么意思... 我猜它是通过正则表达式选择文本? - mazlix
@mazlix 是的,$1 获取第一个捕获组的内容。即被 () 包含的内容。在这种情况下:[^"]+ == 1 或多个非 " 被包含在 "" 中。 - Jacob Eggers

0

虽然@davin的答案是正确的,但我想你还需要处理双引号实例。

var str = "hello, my name is \"michael\", what's your's? Is is \"James\" or is it blank:\"\"";

在这里,用 * 取代 + 即可:

/"([^"]*)"/g

虽然你可以通过简单的第一次解析搜索和替换来完全丢弃它:

str.replace(/""/,"")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接