2017-06-15 41 views
1

我想檢查我的表單域的值是否它是數字與兩位小數,並做相應的驗證。它應該接受兩位小數的數字例如:2.33否則它應該拋出像2.987這樣的錯誤,它不應該接受兩位以上的小數。誰能幫我這個?驗證文本字段值與數字與兩位小數只在coldfusion

我曾嘗試以下操作:

<cfif NOT isValid(#NumberFormat(7.4, ",.00")#, dataValue)> 
+0

我已經試過\t ** ** –

+0

https://stackoverflow.com/questions/5080671/limit-cfinput-to -valid-currency-values對您有幫助嗎? – jvwilge

回答

2

正則表達式是驗證的好方法。看看哪個選項,你可以在這裏使用:

<cfif not reFind("^[0-9]+\.[0-9]{2}$", dataValue)> 
    <cfthrow type="IllegalArgumentException" message="You may input a decimal value with two decimal places only!"> 
</cfif> 

^ =價值已開始與即將到來的模式
[0-9]+ =匹配的數字從0到9,一個數量級以上
\. =點(字面上),反斜線是轉義碼元因爲.具有不同的效果
[0-9]{2} =匹配位數從0到9,恰好兩個數字
$ =值與先前的模式結束


如果要接受點和逗號作爲小數點分隔符,可以將\.更改爲[,.]
如果要接受一個或兩個小數位,可以將[0-9]{2}更改爲[0-9]{1,2}

如果您不需要在所有小數,但它們存在的時候,他們必須有兩位小數:

<cfif not reFind("^[0-9]+(\.[0-9]{2})?$", dataValue)> 
    <cfthrow type="IllegalArgumentException" message="You may input a decimal value without decimal places or with exactly two decimal places only!"> 
</cfif> 

(\.[0-9]{2})? =括號組模式和問號標記爲「可能匹配一次」或「可能完全不匹配」。

注:[0-9]相當於\d。我只是希望看到數字。

1

我不喜歡使用cfinput,但由於時間的關係:

<cfinput type="text" name="name" mask="9.99"/> 
1

可以使用isValid()用正則表達式來驗證此相伴:

<cfset input = "7.44"> 
<cfif isValid("regex", input, "^\d+\.\d{2}$")> 
    <!--- Valid input handler ---> 

<cfelse> 
    <!--- Invalid input handler ---> 

</cfif> 

這是GIST

注: -不相關的問題,但你並不需要額外的散在,你已經嘗試了代碼。您可以查看更多here