2011-03-23 12 views
1

我有一些JavaScript正在看基于用户选择的文本字符串和包装在<范围内的字符串>标签。我正在寻找一个正则表达式,它将查看文本字符串并检查字符串中现有的html标记,如果它们存在,则分割跨度以使其不会使html无效。正则表达式来插入html标签无法创建无效的html

例如,可以说我有以下文字

 

<p>Lorem ipsum dolor sit amet, <i>consectetur adipiscing elit</i>. 
Curabitur tortor risus, facilisis vitae bibendum sit amet, mattis non dui.</p> 

,用户可以选择 “阿梅德,<我> consectetur”。该字符串应该结束了为 “<跨度>阿梅德,</SPAN > <我> <跨度> consectetur </SPAN >”,而不是TP “<跨度>阿梅德,<我> consectetur </SPAN >”

+2

这将是很难使用正则表达式来完成这项工作。通常,正则表达式对于HTML解析来说是个坏主意。示例:我怀疑如果结束标记出现在选择内,您只想创建一个跨距块?在这种情况下,语义进入过程,正则表达式不适合。看看HTML解析器。 – 2011-03-23 15:12:15

回答

3

HTML不应该用RegEx解析。见:RegEx match open tags except XHTML self-contained tags

+0

请详细说明一下(没有引用Bobince的整个着名咆哮)。 – 2011-03-23 15:15:27

+0

我很想避免使用正则表达式来解决这个问题。什么是更好的方法? – cangeceiro 2011-03-23 15:28:51

+0

+1用于提醒用户使用RegEx和HTML的问题。但是请注意,您引用的问题也有答案,表明在某些有限的情况下,使用正则表达式解析HTML是合理的。它绝对是真的,你**不能**使用正则表达式来解析HTML的**结构**。但是你可以使用正则表达式来确定什么是标签和什么是文本。这是一个非常不同的问题。实际上,我认为在这种情况下海报的问题可以通过正则表达式来处理。 (虽然可能有更好的方法来解决问题。) – 2011-03-23 15:36:41