[英]javascript regex for whole and decimal numbers (money)
試圖寫一個javascript正則表達式強制用戶輸入一個整數后的小數,似乎很多人不想這樣做,因為我的搜索沒有產生任何符合我需要的東西。
Match: 2.00 20.00 200.00 1.73 0.10
No Match: .2 .20 . 1 10 1.0 0.1 1.
這是我目前的情況:
var regexp=/^[0-9]{1,}\\.{1}[0-9]{2}$/;
用簡單的英語,用戶必須以X.XX格式輸入資金。 只有一個數字本身是不允許的。
我很感激任何幫助,也教會了任何人在完成這項工作時提供的見解。
編輯:
這是代碼:
var notempty=/[a-zA-Z0-9\.\$]/g;
var money=/^[0-9]{1,}\.{1}[0-9]{2}$/;
if ( (notempty.test(document.getElementById('numbers').value)) && (!money.test(document.getElementById('numbers').value)) )
{alert('Wrong format');}
您的初始正則表達式是正確的,問題實際上是您的notempty
檢查可以在值為false
使條件短路。 例如,如果您的字符不是字母,數字,美元符號或句點,則/ /[a-zA-Z0-9\\.\\$]/
它將評估為false
並忽略&&
之后的項目作為值無所謂因為false && [any conditions] = false
。 例如,如果輸入值為"+"
:
if ( false && ... )
// invalid format [the expression was false, so this isn't ran]
由於第一個條件為false
因此整個表達式變為假,導致不正確的"correct format"
。 無論如何,在這種情況下不需要“空檢查”,您可以簡單地:
if (money.test(document.getElementById('numbers').value) {
// valid format
} else {
// invalid format
}
正如@JostCrozier所指出的,您的表達式可以簡化為:/ /^\\d+\\.\\d{2}$/
。 /^\\d+\\.\\d{2}$/
,這在功能上是等效的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.