2014-02-05 55 views
1

我試圖使用regExp來驗證輸入。使用正則表達式驗證數字字段

輸入應該有一個數字字段,逗號前不超過3位數字,逗號後不超過2位數字。

我試過這個正則表達式:[0-9] {1,3}([。|,] [0-9] {1,2})?

但它不起作用。值1234.567驗證爲確定,但它不應該。

在這裏,我來試試這個代碼:

<html> 
<head> 
<meta charset="utf-8"> 
<title></title> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 
<script src="js/test.js"></script> 
</head> 
<body> 

<input id="regExp1" type="text" value = "[0-9]{1,3}([\.|,][0-9]{1,2})?" /> 
<input type="button" value="->" onclick="applyRegExp(regExp1,test1)"> 
<input id="test1" type="text" /> 
<input type="button" onclick="TestRegExp(test1,test1Result)" value="test"> 
<div id="test1Result" ></div> 

</body> 
</html> 

///.. test.js : 
function applyRegExp(input1,input2){ 

    input2.pattern = input1.value; 
} 



    function TestRegExp(inputField,resultField){ 

     var regexp = new RegExp(inputField.pattern); 
     var value = inputField.value; 

     if (regexp.test(value)){ 
      resultField.innerHTML = inputField.name + " ok"; 
     }else 
     { 
      resultField.innerHTML = inputField.name + " not ok"; 
     } 

    } 

回答

1

這可能是你想要

^\d{1,3}([.|,]\d{1,2})?$ 

更新的內容:我們只是檢查字符串從一開始就以匹配結束(用^$

。這是怎麼回事只是我們讓3位在一排(任何),接受點或逗號,但excpect它至少1位,最多2

+0

有點解釋會有幫助。 – Pavlo

+0

你是對的,更新我的回答 – axelduch

+0

謝謝@aduch,它的工作原理。我錯過了^和$字符 – Arsnow

1

試試這個

^\d{1,3}([.|,]\d{1,2})?$ 

Regular expression visualization

+0

這隻需要一個浮點** ** – axelduch

+0

@aduch,沒有注意到quesn中的量詞,謝謝:) – rps

相關問題