有没有可能在“The <strong>dog</strong> is really <em>really</em> fat!
”中匹配“这只狗真的真的很胖”,并在其周围添加“<span class="highlight">WHAT WAS MATCHED</span>
”?
我并不是说这一点特别,但通常能够搜索文本忽略HTML,保持它在最终结果,只是添加跨度以上围绕这一切?
编辑:
考虑到HTML标签重叠的问题,是否可以匹配一个短语,并在每个匹配的单词周围添加跨度?这里的问题是,我不希望单词“dog”不在搜索的上下文中时匹配,在这种情况下,“the dog is really really fat”。
7条答案
按热度按时间kpbpu0081#
更新:
这是一把能按你的要求工作的小提琴。但是,您需要更新
htmlTagRegEx
以处理任何HTML标记上的匹配,因为这只是执行一个简单的匹配,并不能处理所有情况。http://jsfiddle.net/briguy37/JyL4J/
下面是代码。基本上,它一个接一个地取出html元素,然后在文本中进行替换以在匹配的选择周围添加突出显示范围,然后一个接一个地推回html元素。很难看,但这是我能想到的最简单的方法...
g52tjvyc2#
Naah...只需使用好的旧RegExp ;)
j8ag8udp3#
使用jQuery的一个简单方法是。
这对我来说很好。
rkue9o1l4#
ddarikpa5#
下面是一个正则表达式的例子来排除html标签和javascript中的匹配:
在replace()脚本中使用此正则表达式。
qij5mzcb6#
您可以对表达式
</?\w*>
使用字符串替换,然后您将得到字符串f5emj3cl7#
如果使用jQuery,可以在包含要搜索的文本的元素上使用
text
属性。给定此标记:这将产生“狗真的很胖!“:
您可以在该文本上执行正则表达式搜索,而不是尝试在标记中执行搜索。
如果没有jQuery,我不确定有没有一种简单的方法来从所有子元素中提取和连接文本节点。