Есть ли встроенный способ в symfony2 для проверки строки (в моем случае имя пользователя и другое свойство) против классического правила az, AZ и 0-9?
Должен ли я написать это в регулярном выражении как пользовательский валидатор? (если это так, подскажите, где искать, ценится)
Вы должны использовать собственный валидатор Regex ,
Это так же просто, как использовать аннотацию утверждения Regex, как следует,
use Symfony\Component\Validator\Constraints as Assert; class YourClass { /** * @Assert\Regex("/[a-zA-Z0-9]/") */ protected $yourProperty; }
Вы также можете настроить свою проверку, установив для параметра соответствия значение false
, чтобы утверждать, что данная строка не соответствует.
/** * @Assert\Regex( * pattern="/[a-zA-Z0-9]/", * match=false, * message="Your property should match ..." * ) */ protected $yourProperty;
Использование аннотации – это не единственный способ сделать это, вы также можете использовать YML, XML и PHP , проверить документацию , полно примеров, которые объясняют эту проблему.
Я не мог заставить предыдущий ответ работать правильно. Я думаю, что отсутствует квантификатор повторения ( +
). Даже тогда он будет соответствовать подстрокам, если оскорбительные символы были в начале или конце строки, поэтому нам нужно начинать ^
и заканчивать $
ограничения. Мне также нужно было разрешить тире и подчеркивания, а также буквы и цифры, поэтому мой последний шаблон выглядит так.
* @Assert\Regex("/^[a-zA-Z0-9\-\_]+$/")
Я использую Symfony 2.8, поэтому я не знаю, изменилась ли проверка Regex, но это кажется маловероятным.
Хорошим ресурсом для тестирования шаблонов регулярных выражений является regex101.com .