2015-10-08 123 views
0

我試圖實現這個正則表達式檢查。 (1個整數,3位數字)幫助正則表達式Javascript

有效:

  • 0.236
  • 0.21
  • 1.231
  • 1.01

無效:

  • 12.23
  • 0.21323

我想通過只用0-3小數位小數有隻有1位數的後續。

任何幫助將是偉大的。我試過這個: ^(([0-9]{1})?(?=\.)[0-9]{0,3})|([0-9]{1})$ 但沒有鎖定。

編輯:我應該補充說我正在使用名爲inputmask的JQuery插件。我希望輸入掩碼只接受我的要求。

+0

@Tushar:這將匹配他「無效」例子的三分之二。 –

+0

你的號碼會自己輸入。會有其他文字嗎?這些是有效的:'1.23','0.325','一些文本1.23'? – vol7ron

+0

不要重命名問題以包含單詞「已解決」,請參閱[如何接受答案的工作?](http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-工作) – Quentin

回答

1

我想只有一個整數後跟一個小數只有0-3小數位。

「1個整數」我想你的意思是一個,爲12是一個整數。如果是這樣的:

\d\.\d{0,3} 

匹配一個數字,後面接着.加上零到三位數。如果您想進一步斷言,它的整個字符串匹配,加錨兩端:

^\d\.\d{0,3}$ 

請注意,你給的規則允許1.,這似乎是你可能不希望。如果不這樣做,那麼我們需要做更多的工作:

^\d(?:\.\d{1,3})?$ 

,上面寫着:一個數字可選後跟一個. 1-3位。它有「整個字符串」的錨點,如果你不需要它們,就把它們刪除。

活生生的例子使用最後一個:

var input = document.querySelector("input"); 
 
var rex = [ 
 
    /\d\.\d{0,3}/, 
 
    /^\d\.\d{0,3}$/, 
 
    /^\d(?:\.\d{1,3})?$/ 
 
]; 
 
input.oninput = input.onpaste = input.onkeypress = updateDisplay; 
 

 
function updateDisplay() { 
 
    rex.forEach(function(r, index) { 
 
    var display = document.getElementById("r" + index); 
 
    if (!input.value) { 
 
     display.innerHTML = "--"; 
 
    } else if (input.value.match(r)) { 
 
     display.innerHTML = "valid"; 
 
    } else { 
 
     display.innerHTML = "INVALID"; 
 
    } 
 
    }); 
 
}
<input type="text"> 
 
<p><code>/\d\.\d{0,3}/</code> says: <span id="r0"></span></p> 
 
<p><code>/^\d\.\d{0,3}$/</code> says: <span id="r1"></span></p> 
 
<p><code>/^\d(?:\.\d{1,3})?$/</code> says: <span id="r2"></span></p>

+0

謝謝。我已經嘗試了所有三個,但仍然不起作用。對不起,我應該提到我正在使用名爲「inputmask」的插件。我只想讓用戶輸入1位數字,10進制數字和0-3數字。 – user3407584

+0

@ user3407584:我在第三個開頭有一個錯字。正則表達式肯定有效,請參閱現場示例。 –

+0

你應該接受這個答案。幾分鐘後他擊敗了我。無論如何,我認爲它比我的要好。 –

1

要使用jquery-inputmask做到這一點,用這個

<input id="example2" data-inputmask-regex="/^\d{1}\.\d{0,3}$/" /> 

然後在你的JavaScript文件,添加此

$(document).ready(function(){ 
    $("#example2").inputmask("Regex"); 
}); 

這裏是正則表達式擊穿

^ - 從0完全1位到9

\. - - 隨後一段正則表達式必須與此表達

\d{1}啓動。需要注意的是週期必須進行轉義

\d{0,3} - 由0至3位數

$其次 - 正則表達式必須用這個表達

我對您的所有實例測試結束。

+0

謝謝。我試着去註冊,但因爲我是新手,所以不會允許我這樣做。 :( – user3407584