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

时间:2011-12-01 23:02:05

标签: javascript regex

我知道一些基本的正则表达式,但这就是问题所在。每个charachter都将被封闭在一起。 我希望替换被引号包围的内容,因此,类似"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>

?我正在使用正则表达式,因为“某些东西”可能是任何东西。

BTW:允许在代码中使用jQuery

还有更多的东西.charachter类,我不想添加类“green”,只是用引号括起来的

4 个答案:

答案 0 :(得分:2)

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

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元素,至少在结束报价之前。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

如果您的模式看起来像这样/"(.*)"/,您应该在明星 * 之后添加问号以使其不合适,例如{{1} }

也结帐repeating section on regular-expressions.info

答案 3 :(得分:0)

你不能可靠地做到这一点,因为“也会出现在跨度内。”

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