我正在对一些文本处理进行原型设计以准备用于编码的研究数据,并且我有一个javascript替换声明jsFiddle中的炸弹我无法找出原因:
mE[1] = mE[1].replace(/<p.*>/ig, ''); // <<< this line
我正在尝试删除任何打开的段落标记。
如果查看http://jsfiddle.net/jotarkon/2e5gq/,请取消注释该行并发现脚本失败。
- 点击标题以启动功能
这让我疯了。任何想法出了什么问题?
答案 0 :(得分:2)
首先,不要将regexen用于HTML。有可用的库。您无法使用regexen解析HTML。其次,你需要更具体。说“炸弹的替代声明”并没有告诉我们错误的本质。最后,如果你很好奇,那个正则表达式是贪婪的,所以它将替换从第一个以字母p开头的HTML标签到输入中最后一个>
的所有内容。如果您真的想要使用它,请将其设置为非贪婪并确保它与以字母p开头的其他标记不匹配。我不会具体,因为这样做是错误的答案。
答案 1 :(得分:2)
问题似乎是该行某处的实际非法字符,我不认为它与正则表达式有任何关系。尝试从头开始输入整行并删除该行。当我这样做时,小提琴工作正常(好吧,它至少没有得到那个错误)。
编辑 - 非法字符就在该行的分号后面。从“this line”注释中的“//”开始,按退格键几次以删除伪造字符和分号,然后重新键入分号。
再编辑 - 字符是C2 AD(十六进制)序列。