我正在使用以下代码块:
<li class="standby" id="id4">
<a href="www.google.com" target="_self" title="Contact Information"> Contact Information<font class="menuItemType">(BB)</font></a></LI>
<li class="standby" id="id5">
<a href="www.google.com" target="_self" title="Contact Information"> Contact Information<font class="menuItemType">(BB)</font></a></LI>
<li class="standby" id="id6">
<a href="www.google.com" target="_self" title="Contact Information"> Contact Information<font class="menuItemType">(BB)</font></a></LI>
<li class="standby" id="id7">
<a href="www.google.com" target="_self" title="Contact Information"> Contact Information<font class="menuItemType">(BB)</font></a></LI>
我已经遇到了相当多不同的模式,但我似乎不能得到任何工作,我需要的。我一直在使用/^(?:<li>.*?</li>\s*)/
,但我知道它的方式了。基本上,我需要使用正则表达式来根据ID查找和删除LI,这将是动态处理的。所以如果上面是一个菜单,我需要删除5个。如果我能让正则表达式突出显示5,例如在http://regexpal.com/中,我应该能够 Package 这个。
更新:我需要使用一个非基于js的函数来实现这一点,所以没有jquery。具体来说,我使用的是:http://cfquickdocs.com/cf9/#rematchnocase
7条答案
按热度按时间odopli941#
这里真实的的答案是you should not be using a regular expression to parse HTML,因为HTML不是一种常规语言。
相反,可以在CF代码中使用Java库JSOUP来操作正在使用的HTML。
下载jar并将其添加到CF类路径后,可以执行以下操作:
我已经测试过了,它输出的正是您所要求的--没有指定LI元素的原始HTML。
dfuffjeb2#
不确定coldfusion的具体语法,但如果它支持非贪婪量词,那么这将工作。
yc0p9oo03#
你已经用jQuery标记了你的问题,所以:
或者如果id在变量中:
你不需要担心按元素类型进行选择,因为你 * 正在 * 分配唯一的id,对吗?
或者删除第n个li元素:
qrjkbowd4#
你似乎已经用太多的语言标记了你的问题,但这是PHP的答案:
wlp8pajw5#
我认为Kolink提供的表达式将最好地为您服务。假设你把HTML存储在一个名为“htmllist”的变量中,下面的代码应该可以工作:
正如Jake Feasel提到的,HTML不是常规的,但这应该可以工作。如果您的问题变得更加复杂(例如,如果您需要对不同属性之间的关系采取行动),基于XML的解决方案可能会很好地为您服务。
假设您的“htmllist”变量包括周围的“UL”标记并且是有效的XML,下面的代码将等效于上面发布的正则表达式解决方案。
这并不能更好地解决原来的问题,但如果问题变得更复杂,作为起点可能会有所帮助。
nkoocmlb6#
我会这么做它不使用rematchnocase,而是使用ColdFusion XML实用程序、XMLSearch/XPath查询,并返回预期的结果。您需要添加根元素though(ul)。
l7mqbcuq7#
感谢我的队友@Alex Brown为我更新了正则表达式函数,感谢@Paul Alexandria 为我提供了php/cf版本的正确方向,感谢@Splash-x @nnnnn为我提供了所需的jquery版本。这里是cf端的测试用例,一旦我得到jquery设置就会更新: