2013-03-22 46 views
0

例如,id爲的javascript:從複雜的ID字符串提取數組索引

id='_group[3].id.memberid' 

我嘗試提取 '3' 使用

var thisIndex = j(this).attr('id').match('/[\d]+/g')[0]; 

不工作....

+0

你有訪問是如何生成的HTML?如果是這樣,您可能希望將該索引放入「data-'屬性中。更容易提取。 – Steve 2013-03-22 20:04:58

回答

2

正則表達式應該是略有不同:

.match(/\[(\d+)\]/)[1]; 
  • 你不需要各地正則表達式的報價
  • 你必須逃脫方括號

或者split解決方案:

.split(/\]|\[/)[1]; 

測試:http://jsfiddle.net/dfsq/Q5bMP/

5

如果id='_group[3].id.memberid'是標準的格式,你可以做

id.split(']')[0].split('[')[1] 
+0

+1爲了解決這個瓦特/出一個正則表達式 – 2013-03-22 20:04:59

+0

但是這實際上並沒有提取數字... – 2013-03-22 20:06:56

+0

@BradM不使用正則表達式的論點往往是性能,但我不認爲鏈式分割調用比這種情況下的匹配性能更高。 – 2013-03-22 20:21:29

1

正則表達式文字不應該在字符串中。刪除.match調用中的撇號。

如果您打算將它們作爲角色類,則不需要[];只需\d+就夠了。如果您打算爲他們是文字,你需要轉義:

/\[\d+\]/ 

我懷疑g希望無論是。

+1

如果只使用第一個值,那麼'g'是無用的。 – 2013-03-22 20:05:07

2

只是提供一種替代方法,它不能完全回答問題,但可能首先解決問題。

如果你可以改變HTML,我會做到以下幾點:

HTML

<div id="_group[3].id.memberid" data-id="3"></div> 

JS:

var thisIndex = j(this).attr('data-id');