2011-08-13 64 views
1

部分我有一個輸入字段具有此名稱:獲得從字符串

myinput[something][etc]

我怎樣才能得到最後[]部分從它的內容?即在這種情況下爲etc

回答

2

您可以使用正則表達式來匹配最後一對[]之間的任何內容。因爲[]在正則表達式中有特殊含義(它們用於分隔字符類),所以您必須使用\來避免它們。整個匹配(除[]之外)使用$固定在字符串的末尾。

var s = 'myinput[something][etc]', 
    re = /\[([^\]]*)\]$/ 
    text = re.exec(s)[1]; // "etc" 
+3

+1 - 我羨慕你這樣的人誰可以拉正則表達式的解決方案的帽子。 – AlienWebguy

+0

@外星人這個超級簡單,老實說。它看起來很醜,因爲有很多逃跑。 –

+0

我想,一旦我真的到處去「學習」,我會同意哈哈。在此之前,道具,先生:) – AlienWebguy

6

如果您知道該字符串與]結束,您可以使用簡單的字符串操作:

var name = "myinput[something][etc]"; 
var index = name.lastIndexOf('['); 
var last = name.substr(index + 1, name.length - index - 2); 
+2

+1的解決方案比正則表達式快一倍:http://jsperf.com/regex-vs-lastindexof – AlienWebguy

+0

@AlienWebguy:它的IE瀏覽器速度提高了6倍, Firefox瀏覽器。 :) – Guffa

+0

哇這是關於[V8](http://code.google.com/p/v8/)的說法 - 該基準測試顯示IE9的最終索引運行速度是Chrome的兩倍以上。說它不是這樣! – AlienWebguy