2012-10-23 56 views
0

我試圖找到/利用只有字符0-9的正則表達式。如果可能的話,我還試圖讓用戶使用他們的正常鍵(退格鍵,左右箭頭,退格鍵)。只有字符0-9的正則表達式?

另外,我想停下來。 (期間),%(百分比)和'(單引號)。

這是我迄今爲止,但不停止上述三個問題:

function onlyNumbers(evt) { 
     var theEvent = evt || window.event; 
     var key = theEvent.keyCode || theEvent.which; 
     key = String.fromCharCode(key); 
     var regex = /[0-9]/; 
     //alert(theEvent.keyCode) 
     if(!regex.test(key) && theEvent.keyCode!='8' && theEvent.keyCode!='46'&& theEvent.keyCode!='37' && theEvent.keyCode!='39') {//keyCode8 = backspace 
      theEvent.returnValue = false; 
      if(theEvent.preventDefault) theEvent.preventDefault(); 
     } 
    } 
+0

如果您必須這樣做,那麼您的用戶體驗存在嚴重問題。 – deltree

+0

這是綁定到按鍵,鍵控或keydown處理程序? – jbabey

+0

您發送混合信號。標題說「1到9」,但問題是「0-9」,這是什麼? – zzzzBov

回答

2

您應該使用的||代替&&

您也可以使用。它相匹配的正則表達式[^.%'].,%,','

+0

'[^。%']'已經匹配數字。 –

+0

@ m.buettner我很笨.thxx – Anirudha

1

之外的任何字符我將使用允許的keyCodes數組並檢查該數字:

function onlyNumbers(evt) { 
    var theEvent = evt || window.event; 
    var key = theEvent.keyCode || theEvent.which; 

    // 0-9, backspace, left and right arrows 
    var allowedKeyCodes = [48,49,50,51,52,53,54,55,56,57,8,37,39]; 

    if(allowedKeyCodes.indexOf(key) === -1) { 
     theEvent.returnValue = false; 
     if(theEvent.preventDefault) theEvent.preventDefault(); 
    } 
}