2011-04-14 58 views
0

這可能只是在濫用.filter()這裏,但我一直試圖從javascript選項框中提取特定的文本,但沒有取得太大的成功。從選擇選項框中提取特定文本

簡而言之,我的每個選項框都有一堆信息,然後在括號內([x]個物品留在庫存中)。

我想提取[x],但我似乎無法得到任何正則表達式過濾工作在jQuery - 或者,也許,我做錯了。

總之,如果任何人都可以完成以下,我會非常感激:

$('.productSelect').change(function() { 
    selectedItem = $(this + 'option:selected').text(); 

    # Now grab the integer "x" inside the ([x] items left in stock) part of the text 
    [ your code here] 
}); 

任何幫助非常讚賞。

+0

這似乎並不像一個jQuery的問題。這是一個關於正則表達式的問題。 – Adam 2011-04-14 05:29:55

+0

我對正則表達式相當熟悉,但似乎無法用jQuery提取([\ d] +)。我想問題是如何在jQuery中提取正則表達式()。 – PlankTon 2011-04-14 05:32:38

+0

Fyi,你真正的問題是關於純javascript,而不是jquery。你應該使用'var selectedItem ='而不是'selectedItem =',所以你不要把你的var放到全局範圍中。 – ThiefMaster 2011-04-14 06:12:17

回答

1

東西沿着這些路線:

$('.productSelect').change(function() { 
    selectedItem = $(this + 'option:selected').text(); 

    # Now grab the integer "x" inside the ([x] items left in stock) part of the text 
    var n = selectedItem.match(/(\()(\d+)(\))/)[2]; 
}); 

當然,這種表達取決於對你的數據被格式化爲(number) string

+0

足夠接近 - 非常感謝。 :-) – PlankTon 2011-04-14 05:47:01

0

這應該得到你所需要的事實。

var pattern=/\[(\d+)\] items left in stock/; 
var qty = pattern.exec(selectedItem)[1]; 
0

所以,你應該使用JavaScript string.match功能

var s = "[100] items left in stock"; 

var p = s.match(regexp); 
+0

現貨 - 非常感謝。 :-) – PlankTon 2011-04-14 05:48:45

相關問題