Избегать апострофов в регулярных выражениях? - PullRequest
7 голосов
/ 13 сентября 2011

Я пытаюсь проверить форму с помощью регулярного выражения, найденного здесь http://regexlib.com/. Я пытаюсь отфильтровать все символы, кроме a-z, запятых и апострофов. Если я использую этот код:

<cfinput name="FirstName" type="text" class="fieldwidth" maxlength="90" required="yes"    validateat="onsubmit,onserver" message="Please ensure you give your First Name and it does not contain any special characters except hyphens or apostrophes." validate="regular_expression" pattern="^([a-zA-Z'-]+)$" />

Я получаю следующую ошибку: Unmatched [] в выражении. Я понял, что это относится к апострофу, потому что он работает, если я использую этот код (но не допускает апострофы):

<cfinput name="FirstName" type="text" class="fieldwidth" maxlength="90" required="yes"    validateat="onsubmit,onserver" message="Please ensure you give your First Name and it does not contain any special characters except hyphens or apostrophes." validate="regular_expression" pattern="^([a-zA-Z-]+)$" />

Так что мне интересно, есть ли какой-нибудь особый способ избежать апострофов при использовании регулярных выражений?

EDIT

Я думаю, что я нашел, где проблема вызывается (спасибо xanatos), не знаю, как ее исправить. По сути CF генерирует скрытое поле для проверки поля следующим образом:

<input type='hidden' name='FirstName_CFFORMREGEX' value='^([a-zA-Z'-]+)$'>

Поскольку он использует одиночные апострофы, а не речевые метки вокруг значения, он интерпретирует апостроф как конец значения.

Ответы [ 2 ]

7 голосов
/ 13 сентября 2011

Я думаю, что есть ошибка в реализации cfinput. Вероятно, он использует строку, которую вы передаете в шаблоне в регулярном выражении Javascript, но использует ' для кавычек. Таким образом, он преобразует его в:

new Regex('^([a-zA-Z'-]+)$')

Попробуйте заменить цитату на \x27 (это код для одиночной цитаты)

0 голосов
/ 13 сентября 2011

Непревзойденный] потому, что дефис трактуется как интервал между двумя символами вокруг негоПоместите дефис в начале как лучшая практика.

^([-a-zA-Z']+)$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...