2011-07-12 126 views
4

如何通過jquery檢查字符串是否包含任何數值?jQuery - 檢查字符串是否包含數字值

我搜索了很多例子,但我只是想方法來檢查一個數字,而不是一個字符串中的數字。我試圖找到像$(this).attr('id').contains("number");

(P/S:我的DOM ID會像Large_a(不含數值),Large_a_1(與數值),Large_a_2等)

何種方法均應我用?

+0

一個第一谷歌搜索結果: http://stackoverflow.com/questions/3955345/javascript-jquery-get-字符數字 –

回答

3

此代碼檢測由下劃線符號開頭結尾數字(azerty1_2將匹配 「2」,但azerty1將不匹配):

if (matches = this.id.match(/_(\d)+$/)) 
{ 
    alert(matches[1]); 
} 
+0

不需要分組,* test *可能更合適(* match *返回匹配數組,* test *只是測試)。所以'if(/_\d+$/.test(this.id)){...}'。很好地注意到OP可能只希望追蹤數字。 :-) – RobG

+0

對不起,我只是喜歡短代碼...我們永遠不知道數字的價值是否需要:-) –

+0

完成它:if(ui.draggable.children()。attr('id ').match(/ _(\ d +)$ /)!= null) – shennyL

7

你可以使用正則表達式:

var matches = this.id.match(/\d+/g); 
if (matches != null) { 
    // the id attribute contains a digit 
    var number = matches[0]; 
} 
2

簡易版:

function hasNumber(s) { 
    return /\d/.test(s); 
} 

更高效的版本(保持在一個閉合正則表達式):

var hasNumber = (function() { 
    var re = /\d/; 
    return function(s) { 
     return re.test(s); 
    } 
}()); 
+0

我很好奇你的關閉版本是多少效率?我認爲閉包的開銷是值得的,以避免每次重新創建正則表達式? – nnnnnn

相關問題