2012-02-10 46 views
0

我正在使用jquery來對錶名列進行排序。我全都用js設置,只是有點卡在regex命令上。正則表達式來刪除名字,以允許按姓氏排序

的什麼我正在尋找

例子:

<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 

回答

2

假設你正在使用JavaScript中替換,下面的工作:

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>
  • 另一個非-greedy capture - 在這種情況下,強標籤內的所有東西
  • 一個harcoded關閉強標籤
  • 一個額外的非貪婪捕獲,以確保強結束標記後沒有字符
  • 硬編碼關閉標記。

據推測,不過,你會想使用jQuery來獲得鏈接,這將意味着你可以消除在正則表達式的<a<\/a>裏面的內容。

+0

我完全忘了我添加了強大的...使它變得非常簡單...有時我會在給予它很多想法之前發佈。謝謝 – Jeffrey 2012-02-10 21:34:37