jsfiddle在这个正则表达式上失败了吗?

时间:2011-11-18 22:04:28

标签: javascript regex replace

我正在对一些文本处理进行原型设计以准备用于编码的研究数据,并且我有一个javascript替换声明jsFiddle中的炸弹我无法找出原因:

   mE[1] = mE[1].replace(/<p.*>/ig, '');­ // <<< this line

我正在尝试删除任何打开的段落标记。

如果查看http://jsfiddle.net/jotarkon/2e5gq/,请取消注释该行并发现脚本失败。

- 点击标题以启动功能

这让我疯了。任何想法出了什么问题?

2 个答案:

答案 0 :(得分:2)

首先,不要将regexen用于HTML。有可用的库。您无法使用regexen解析HTML。其次,你需要更具体。说“炸弹的替代声明”并没有告诉我们错误的本质。最后,如果你很好奇,那个正则表达式是贪婪的,所以它将替换从第一个以字母p开头的HTML标签到输入中最后一个>的所有内容。如果您真的想要使用它,请将其设置为非贪婪并确保它与以字母p开头的其他标记不匹配。我不会具体,因为这样做是错误的答案。

答案 1 :(得分:2)

问题似乎是该行某处的实际非法字符,我不认为它与正则表达式有任何关系。尝试从头开始输入整行并删除该行。当我这样做时,小提琴工作正常(好吧,它至少没有得到那个错误)。

编辑 - 非法字符就在该行的分号后面。从“this line”注释中的“//”开始,按退格键几次以删除伪造字符和分号,然后重新键入分号。

再编辑 - 字符是C2 AD(十六进制)序列。