我想检查表单字段的值是否是带有两位小数的数字,并相应地进行验证。它应接受带有两位小数的数字,例如:2.33,否则应抛出错误,如2.987,不应接受超过两位的小数。谁能帮我这个?

我尝试了以下方法:

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

最佳答案

正则表达式是一种验证的好方法。看一下您可以在此处使用哪个选项:

<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。我只喜欢实际看到数字。

关于coldfusion - 仅在Coldfusion中使用带有两位小数的数字验证文本字段值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44561738/

10-15 15:41