所以我使用ColdFusion来验证表单,并且由于此表单的性质,验证可以非常简单。除了电话领域,我已经全部工作了。输入电话号码必须满足的唯一标准是,在删除所有非数字字符后,它必须至少10个字符。以下是我正在使用的确切代码:
<cfif len(REreplace(phoneNum, "[^0-9]", "", "all")) LT 10>
[THROW AN ERROR]
</cfif>
问题是每次都会抛出一个错误,无论phoneNum的长度如何,除非我要包含一个非数字字符来替换REreplace()。我想看看发生了什么,尝试一些不同的东西,所以我试验了这个:
<cfset phoneLength = len(REreplace(phoneNum, "[^0-9]", "", "all"))>
<cfdump var="#phoneLength#">
<cfif phoneLength LT 10>
[THROW AN ERROR]
</cfif>
在这种情况下,我得到一个10或更多的转储值,但除非我在phoneNum中放入一个非数字字符,否则仍然会抛出错误。我可以使用完全相同数量的数字字符(即转储值保持不变)但添加括号或更改是否会引发错误。有谁知道这里发生了什么?我不敢相信我在问StackOverflow有关If / Then的问题,但我无法理解ColdFusion如何将phoneLength评估为低于10,当它显然并且明显没有。
答案 0 :(得分:1)
您可以尝试使用isValid()。
<cfif NOT isValid("telephone", phoneNum) >
[THROW ERROR]
</cfif>