正则表达式删除名字以允许按姓氏排序

时间:2012-02-10 19:26:54

标签: regex

我正在使用jquery对名称的表列进行排序。我全都设置了js,只是有点卡在正则表达式命令上。

我正在寻找的例子:

<a href="bac">John <strong>Smith</strong></a> => Smith</strong></a>
<a href="abc">John <strong>La Smith</strong></a> => La Smith</strong></a>

我目前的陈述需要一些抛光......

/<a.*>.+ /i

1 个答案:

答案 0 :(得分:2)

假设您在JavaScript中使用replace,以下方法将起作用:

var nameLink = '<a href="bac">John <strong>Smith</strong></a>';
var lastName = nameLink.replace(/<a.*?<strong>(.*?)<\/strong>.*?<\/a>/i,"$1");

给出

Smith
La Smith

分别

现在,这是一个非常基本的正则表达式,内置了许多假设。它假设您的链接始终在<strong>内有姓氏。并且您的链接始终是这种形式。

我不确定您打算如何在代码中使用它,所以我刚刚在替换中提供了正则表达式。

正则表达式本身就是/<a.*?<strong>(.*?)<\/strong>.*?<\/a>/i,它是:

  • 硬编码的起始<a
  • 根据需要非贪婪捕获尽可能多的字符:.*?
  • 硬编码<strong>
  • 另一种非贪婪的捕获 - 在这种情况下,强标记内的所有内容
  • 一个强硬的关闭强力标签
  • 额外的非贪婪捕获,以确保强关闭标记后没有字符
  • a标签的硬编码关闭。

据推测,您可能希望使用jquery来获取链接中的内容,这意味着您可以消除正则表达式中的<a<\/a>