Регулярное выражение в BlueDragon 7.1 позволяет использовать знак $
Я использую валидацию Bluefragon cfform:
<cfinput validateat="onServer" validate="regex" pattern="^[a-zA-Z0-9 ]+$" name="COMPANYDBA" />
Но эта модель не дает правильного результата. Что-то не так со знаком доллара: ^[a-zA-Z0-9 ]+$
Ожидаемый результат: без специальных символов
Фактический результат: никаких специальных символов, за исключением того, что он допускает знак $
Почему в мире это позволило бы знак доллара в строке?
2 ответа
Старый вопрос, но он указан как оставшийся без ответа, так что вот (слишком длинный) ответ, чтобы прекратить это дело (во всяком случае, как только кто-то проголосует против него).
Маловероятно, что источник для cfform существенно изменился между BD7 и OpenBD - потому что в наши дни никто не рекомендует использовать cfform - так вот код OBD, который генерирует HTML:
Этот код говорит нам, что с предоставленными атрибутами скрытое поле формы с суффиксом _CFFORMREGEX
выводится с шаблоном для тестирования.
(Что, конечно, не является реальной проверкой на стороне сервера, несмотря на то, что validateat="onserver"
предполагает, и, следовательно, еще одна причина не использовать cfform).
После отправки это поле формы выбирается и используется через файл cfFormData.java:
Который, если вы пройдете через это, в конечном итоге пропустит com.nary.util.string.regexMatches
который использует Apache ORO для проверки соответствия:
Использование SINGLELINE_MASK означает ^
а также $
будет выполнять их обычное начало / конец совпадения контента (не начало / конец строк) и что .
включает в себя новые строки.
При этом мы можем категорически заявить, что, если ^[a-zA-Z0-9 ]+$
затем $
не будут приняты, поэтому в исходном вопросе должно быть больше, чем было выявлено.
Конечно, вместо того, чтобы беспокоиться обо всем этом, наиболее подходящее решение: прекратить использовать cfform.
Существует множество превосходных вариантов для правильной проверки формы, см. Список Чарли Арехарта: http://cf411.com/form
Попробуйте использовать \A
а также \Z
вместо ^
а также $
соответственно.