LINUX.ORG.RU

Регулярное выражение для поиска запрещенных символов

 


0

1

Приветствую. Мне необходимо выражение, которое возвращает первое совпадение по запрещенным символам. Пытался сделать следующим образом:

[^,._/-/&\w\d]
Но проблема в том, что в онлайн-тестировщике регулярных выражений работает, а в проекте — нет. Вот и хочу спросить: является ли оно валидным и грешить на фреймворк?

★★

[^,._/-/&\w\d]

/-/ сокращается до /. Если нужно добавить -, надо писать его первым или последним: [^-...] или [^...-]

В зависимости от языка и типа кавычек \ может потребоваться удвоить.

anonymous
()
Ответ на: комментарий от UVV

PHP, Symfony2-фреймворк. Я сейчас попытался банально написать /\w/ — работает. Кстати говоря, для PHP мне пришлось оборачивать мое регулярное выражение в ##, иначе выводится ошибка из-за неправильного парсинга скобок.

Razip ★★
() автор топика

Разрешенные символы: «,», «.», «&», «_», «-», буквы и числа.

Razip ★★
() автор топика
Ответ на: комментарий от E

Оно используется для валидации. Дальнейшая логика одного из действий контроллера зависит от правильности вводных данных.

Razip ★★
() автор топика
Ответ на: комментарий от E

Валидировать вводные данные при помощи регулярного выражения.

Razip ★★
() автор топика
Ответ на: комментарий от E

То, что по ссылке — не подходит. Я же уже сказал, что умею дело с фреймворком.

Razip ★★
() автор топика

Я никак не пойму: почему не работает во фреймворке? Пробовал даже так:

#[^-,._/&\a-zA-Zа-яА-Я0-9]#u
«u» — модификатор для UTF-8.

Razip ★★
() автор топика
Ответ на: комментарий от Razip

If true (or not set), this validator will pass if the given string matches the given pattern regular expression

Оказывается есть опция match в конфигурации. Если у ней значение true, то проверяемые данные должны соответствовать регулярному выражению. Т.е. в этом случае не нужно отрицание в регулярном выражении:

#[-,._/&\w\d]#u

Razip ★★
() автор топика
Ответ на: комментарий от Razip

Погорячился. Нужно отрицание, но флаг ставить надо в false.

Razip ★★
() автор топика
Ответ на: комментарий от anonymous

Это от \w осталось, не заметил.

Razip ★★
() автор топика
Ответ на: комментарий от Razip

Оказывается и без него работает.

Razip ★★
() автор топика
Ответ на: комментарий от goingUp

А смысл? Запрещенный символ может находиться в любой части строки. Обычно якоря используются чтобы проверить сначала/с конца что-то.

Razip ★★
() автор топика
Последнее исправление: Razip (всего исправлений: 1)
Ответ на: комментарий от Razip

А, недосмотрел, что ты таки решил оставить в [] отрицание

goingUp ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.