Я пытаюсь проверить форму с помощью регулярного выражения, найденного здесь 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'-]+)$'>
Поскольку он использует одиночные апострофы, а не речевые метки вокруг значения, он интерпретирует апостроф как конец значения.