什么正则表达式来确定是否<或者>是HTML标记的一部分

时间:2011-12-15 17:46:26

标签: javascript regex

如果我有这样的HTML: <dsometext<f<legit></legit> whatever

在d和f之前,我使用什么正则表达式模式将<切换为&lt;

我认为所有<都没有>,但我无法将正则表达式包裹在我脑海中。我有用户输入HTML,然后使用jQuery来包装HTML并解析节点,但是不好的临时标记将其搞砸了,所以我想换掉<

想法?

修改

我没有尝试将HTML解析为有效的HTML。我只想在用户输入时删除临时字符,并在页面上更新HTML。如果他们正在键入<strong>,并且仍然在<并且我尝试将HTML放在页面上,则会导致可怕的标记。这就是我需要换掉它的原因。

答案 我选择了@ pimvdb的答案,因为它正确回答了我提出的问题。

然而,为了让世界变得更快乐,我发现了一种更简单的做事方式而不使用任何正则表达式。基本上我有一个问题,原来[title]代替一个元素,它没有容器元素,保证只包含标题。因此,改变任何东西的innerHTML都会导致恐怖。我们只是添加了包装元素。这样做的犹豫和原因是由于应用程序特有的一些疯狂原因以及我们用户的后向可比性。

2 个答案:

答案 0 :(得分:1)

使用regexp解析HTML并不是一个好习惯,但这对你的样本来说会很好:

"<dsometext<f<legit></legit> whatever".replace(/(?!<[^<>]+>)</g, "&lt;");

(?!<[^<>]+>)确保要替换的<字符与<...>模式不匹配。

答案 1 :(得分:0)

不建议进行此类html或xml解析,但可以通过替换方法本身来完成:

"<dsometext<f<legit></legit>".replace("<d","&lt;d").replace("<f","&lt;f")