【发布时间】:2014-02-17 18:52:28
【问题描述】:
试图解析一些内容(没有可用的 DOM - 或 DOM 解析器,即 jQuery、Cheerio)以用图像替换一些单词/符号(基本上是情感),但想忽略 <code></code> 和 @ 之间的所有内容987654325@ 这个例子非常适合替换所有的情绪,但不会忽略代码和前置标签
http://jsbin.com/odARehI/5/edit?js,console
如果你运行脚本,你会看到第一个打印在代码标签之前和第二个之后。
希望能看到另一组对该模式的关注。谢谢
// see link for a list of the emotions to parse
var pattern = />:\)|\([\w~]+\)|\\[:]?[od]\/|[:;\|bBiIxX8\(\)\]][=\-"^:]?[)>$&|\w\(\)*@#?]?[)>$&|\w\(\)*@#?]/g;
我尝试了一些没有弄乱原始匹配的方法。
对于 Don't-parse-html-with-regex-police-department:这是在服务器端运行,目前我没有 DOM 解析器的奢侈。
谢谢。
更新:对于忽略 <code> 标记的 RegExp 解决方案,请参阅这个简洁的解决方案,感谢 github/frissdiegurke in this commit
/(^|<\/code>)([^<]*|<(?!code>))*(<code>|$)/g
【问题讨论】:
-
你能保证
pre和code标签都不会嵌套在你的输入文本中吗? -
@icktoofay 不是真的,好吧,在大多数情况下,如果是内联的,它要么只是一个
<code> code here </code>,或者如果是一个代码块,它看起来像<pre><code> code here </code></pre>- 但要回答你的问题,除了嵌套的 pre->code 之外,是的,没有嵌套。现在我想了想,忽略<code></code>中的所有内容可能就足够了
标签: javascript regex nodebb