2014-01-23 174 views
0

我有名字輸入:的Javascript正則表達式

<input type="text" name="data[Site][search]"> 
<input type="text" name="data[Site][name]"> 

我想,當我點擊只得到:

search 
name 
etc. 

我在點擊事件JS

var reg = /data\[Site\]\[\d\]/g; 
var test = $(this).attr("name").match(reg); 
console.log(test); 

但控制檯顯示屏null。我的reg有什麼問題?

回答

1

您使用\d這意味着數字而已,你還沒有指定一個量詞,所以你最多隻捕獲一個數字,即:

data[Search][1]

你可以使用\S這是任何非空白字符。要爲至少一個字符做到這一點(因爲你不應該有data[Search][],你也想捕捉的名字,所以在一些()扔。你可以使用的字符集,例如[A-Za-z0-9]切換\S到特定的字符。

總之,修改後的示例不應該是這個樣子:

var reg = /data\[Site\]\[(\S+)\]/g; 
var test = $(this).attr("name").match(reg); 

console.log(test); 

你能夠拉從比賽的實際值擷取使用test[1]

+0

謝謝你,我有一個問題。我怎樣才能只顯示這個字符串?現在在控制檯中有:[「data [Site] [search]」]我只想搜索 – Piotr

+0

嘗試'console.log(test [1])' – Lloyd

2

使用此嘗試。

var reg = /data\[Site\]\[(.+)\]/g;   //Capture the characters between [] 
var test = reg.exec($(this).attr("name")); 
console.log(test[1]);      //Output search | name 

Demo