Javascript regexp替换用引号括起来的东西

javascript regexp replace stuff wrapped in quotes?

本文关键字:起来 regexp 替换 Javascript      更新时间:2023-09-26

我知道一些基本的正则表达式,但事情是这样的。每个字符将被括在跨度中。我希望用引号括起来的内容被替换,因此,像"something"这样的内容实际上是

<span class="charachter">"</span>
<span class="charachter">s</span>
<span class="charachter">o</span>
<span class="charachter">m</span>
<span class="charachter">e</span>
<span class="charachter">t</span>
<span class="charachter">h</span>
<span class="charachter">i</span>
<span class="charachter">n</span>
<span class="charachter">g</span>
<span class="charachter">"</span>

(换行只是为了方便。在现实世界中,这只是一长行。

我怎么把它变成:

<span class="charachter green">"</span>
<span class="charachter green">s</span>
<span class="charachter green">o</span>
<span class="charachter green">m</span>
<span class="charachter green">e</span>
<span class="charachter green">t</span>
<span class="charachter green">h</span>
<span class="charachter green">i</span>
<span class="charachter green">n</span>
<span class="charachter green">g</span>
<span class="charachter green">"</span>

?我使用regexp,因为"something"可能是任何东西。

在代码中使用jQuery是允许的

还有更多的东西是。character类我不想添加类"green"的,只有引号括起来的

这可能有效,具体取决于页面的复杂程度:

var quotes = $("span.charachter:contains(''"')");
for (var i = 0; i < quotes.length - 1; i++) {
    quotes.eq(i).nextUntil(quotes.eq(++i)).andSelf().addClass("green");
}

工作演示: http://jsfiddle.net/3SRdD/2/

假设:

  • span.charachter将永远只包含一个字符。
  • 你永远不会有一个不匹配的报价。
  • 以下带有引号的span.charachter的兄弟姐妹总是更多的span.charachter元素,至少直到结束引号。

简单的jquery解决方案-类似?

$(".character").addClass("green")

如果你的图案看起来像这个/"(.*)"/你应该放置一个问号?后面的星号*使其不贪婪,如/"(.*?)"/

还检查正则表达式的重复部分。info

你不能可靠地做到这一点,因为"也会显示在span中。

但如果你愿意更严格的限制,你可以搜索<span class=".*" -但它只会匹配标签,看起来完全像。