2010-12-21 20 views
3

我希望自己能解決這個問題,但我從來沒有完全理解過正則表達式。他們看起來很強大。我想問問學習javascript reg ex的最佳資源在哪裏,但這是主觀的,我不希望我的問題關閉。我有一個Web窗體上的文本框,當它有一個值時,該值應該是一個介於1 & 999999之間的整數。我已經使用jquery數字插件來僅允許數字,所有其他擊鍵都被拒絕,有一個onBlur實現,如果有的正則表達式不匹配,回調將被稱爲...這是...代碼Javascript reg ex需要1到999999之間的整數嗎?

$.fn.numeric.blur = function() 
{ 
var decimal = $.data(this, "numeric.decimal"); 
var callback = $.data(this, "numeric.callback"); 
var val = $(this).val(); 
if(val != "") 
{ 
    var re = new RegExp("^\\d+$|\\d*" + decimal + "\\d+"); 
    if(!re.exec(val)) 
    { 
     callback.apply(this); 
    } 
} 
} 

我可以修改正則表達式以確保val爲1和999999之間的有效整數?任何幫助,將不勝感激。也很明顯,我想自己做到這一點,什麼是一個簡單的方法來學習JavaScript的正則表達式?非常感謝你。有一個了不起的假期!

乾杯,
〜CK在聖地亞哥

+6

真的是一個正則表達式驗證整數合適的工具? – Christian 2010-12-21 16:43:43

+3

是否有任何理由不能進行`>`或`<`比較並檢查ROUND()是否等於未接地值? – 2010-12-21 16:43:44

+0

@Raj更多提出了一個非常明智的建議。 (爲什麼在真正沒有需要時使用正則表達式。):-) – 2010-12-21 16:44:41

回答

7

在這種特殊情況下,我建議不要使用正則表達式。只需使用普通的好老的Javascript:

if(typeof decimal === 'number' && (decimal > 1 && decimal < 999999)) { 
    // here we go 
} 

投下值轉換成一個數字,您可以使用+運營商或.parseInt()

var val = +$.trim($(this).val()); 
if(val && (decimal >= 1 && decimal <= 999999)) { 
} 
5

這將做的工作:

[0-9]{1,6} 

我會建議使用整數解析/驗證功能,而不是雖然。

2

這不是一個正則表達式的問題。看看JQuery .validate函數。您可以將字段要求設置爲範圍。