Почему это простое сравнение «If # stringLength # LT 10» не работает? - PullRequest
1 голос
/ 06 июня 2011

Поэтому я использую 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 до менее десяти, когда это явно и явно не так.

1 Ответ

1 голос
/ 08 июня 2011

Вместо этого вы можете попробовать использовать isValid ().

<cfif NOT isValid("telephone", phoneNum) >

[THROW ERROR]

</cfif>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...