2015-09-30 3 views
0

У меня есть объект, для которого я использую Regex и NotBlank для подтверждения. Мне нужно, чтобы это поле содержало только английские буквы без цифр. Все работает нормально, но когда я отправляю кириллицу, я не получаю сообщение об ошибке. Почему это? Мне нужно только английскийSymfony Validator Constraints Assert Regex

/** 
* @var string 
* 
* @Assert\NotBlank() 
* @Assert\Regex(
*   pattern= "/^\w+/", 
*   match= false, 
*   message= "This text cannot contain numbers" 
*) 
* 

ответ

2

Возможно, у вас проблемы с Unicode. Я не мог найти, выполняет ли функция RegEx соответствие Unicode или Ascii (\u вариант preg_match), что может иметь значение в вашем случае (поскольку вы, безусловно, предоставляете строку utf-8).

Ссылка:

http://www.regular-expressions.info/php.html

Вторая проблема может быть с:

\w+ 

Который в основном означает, печатаемые символы, включают в себя буквы и цифры, в любой кодировке (Если соответствие UTF-8) , В этом случае вы можете попробовать:

[a-zA-Z]+ 
+0

По умолчанию в 'php' регулярное выражение не использует юникод. Тем не менее, я не уверен в Symfony. Ваше последнее предложение должно работать нормально. – tftd

Смежные вопросы