簡體   English   中英

javascript正則表達式為整數和十進制數(錢)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM