【发布时间】:2026-01-07 07:50:02
【问题描述】:
注意:我不是在尝试使用正则表达式解析 HTML
我正在尝试替换字符串中包含在 $ 符号 ($for example$) 中的任何内容。我已经设法想出了str.replace(/\$([^\$]*)\$/g), "hello $1!"),但是我在确保在将这些字符串包含在 HTML 标记中时不替换它们时遇到了问题。
示例字符串:$someone$, <a>$welcome$</a>, and $another$
表达式:/[^>]\$([^\$]*)\$[^<]/g
预期输出:hello someone!, <a>$welcome</a>, and hello another!
实际输出:$someonhello , !elcomhello , and !nother$
测试代码:alert("$someone$, <a>$welcome$</a>, and $another$".replace(/[^>]\$([^\$]*)\$[^<]/g, "hello $1!"));
小提琴: http://jsfiddle.net/WMWHZ/
谢谢!
【问题讨论】:
-
我认为我们需要退后一步。您如何获得正在解析的文本?您要解决的真正问题是什么?
-
当您谈论包含在 HTML 标记中的内容时,您实际上是在谈论解析 HTML。因为如果不通过解析,您将如何决定 HTML 标签中包含的内容?
-
...难道不是每个文本都被包裹在一些HTML标签中,实际上?
-
我认为他的意思是 紧密 包裹,所以它只有一个文本节点作为子节点,
nodeValue以“$”开头和结尾。 -
@mkoryak:我正在解析一个可能包含 HTML 的文本区域以及包含在 $'s 中的特殊文本,我将对此做一些特别的事情;当我在 HTML 标记中有这样的符号时,就会出现一个问题,我不想触摸这些符号。如果我理解正确的话,MaxArt 是对的。我本可以将问题改写为“忽略括号内的内容”,但我认为将其保留在上下文中会更好,因为 HTML 标记是围绕正则表达式的热门讨论。顺便说一句,谢谢!
标签: javascript regex