假设我的HTML页面中有一个元素,如下所示:
<span class="special caption['This <em>expression</em> describes this element.']">ABC</span>
我想使用jQuery从class属性中提取这个“标题”。我知道如何隔离
caption['This <em>expression</em> describes this element.']
但正则表达式可以让我提取
此&lt; em&gt;表达式&lt; / em&gt;描述了这个元素。
如果我可以合并撇号的转义序列,例如
,则可获得奖励积分caption['This <em style=\'color: #FF0000;\'>expression</em> describes this element.']
并获取
这&lt; em style ='color:#FF0000;'&gt;表达式&lt; / em&gt;描述了这个'元素'。
感谢您的帮助。我真正对正则表达式提出挑战....
答案 0 :(得分:2)
Class
完全是错误的做这样的事情的地方。
这是正确的方法:
<span data-caption="This <em style=\'color: #FF0000;\'>expression</em> describes this element."></span>
然后你可以通过jQuery访问它:
$('span').attr('data-caption')
答案 1 :(得分:1)
您可能不应该将此信息放入class属性中(请参阅locrizak的回答),但如果您出于某种原因必须阅读,请继续阅读。
我认为你不需要正则表达式。如果您已经知道如何解决这个问题:
caption['This <em>expression</em> describes this element.']
...然后您需要做的就是获取该字符串并对其进行子串,如下所示:
var s = "caption['This <em>expression</em> describes this element.']";
s = s.substring(9, s.length - 2);
答案 2 :(得分:1)
我对jQuery的功能不是最有经验的,但你可以试试这个表达式:
/class=".*?caption\['((?:\\'|[^'])*)'/m
我知道它能够在任何字符串中找到具有class
类的任何caption
属性以及上面的格式,并匹配单引号的内容('
) ,允许单一转义单引号(\'
)。
使用此HTML:
<span class="special caption['This <em>expression</em> describes this element.']">ABC</span>
<span class="special caption['This <em style=\'color: #FF0000;\'>expression</em> describes this element.']">ABC</span>
它找到两个匹配(在捕获组1中):
This <em>expression</em> describes this element.
This <em style=\'color: #FF0000;\'>expression</em> describes this element.
我希望这会帮助你!
JavaScript没有后视,或者我提供的解决方案只匹配您想要的文本 - 如果您只能获得整个匹配并且无法访问第一个匹配项,则可以使用两个表达式完成基。