Проверка пользовательского регулярного выражения

Silex

unitecsys
Проверка пользовательского регулярного выражения

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

Каким образом лучше проверить регулярку на корректность до того, как она сохранится в системе? Пока что в голову приходит eval с отловом ошибок, но это небезопасно... В идеале вообще это джаваскриптом сделать, но есть ли там наряду с регекспами еще и безболезненный отлов ошибок - не в курсе...
 

Фанат

oncle terrible
Команда форума
был здесь как-то топик на точно такую же тему.
 

Silex

unitecsys
Есть контакт! Велосипеды давно изобретены...
http://phpclub.ru/talk/showthread.php?s=&threadid=37310&highlight=%EF%F0%EE%E2%E5%F0%2A+%F0%E5%E3%F3%EB%2A

// Если в $query нет ошибок ф-я верет true
function is_correct_ereg ( $query ) {
return @ereg ( '1|'.$query, '1' );
}

Этот вариант никто не критиковал, хотя как работает и работает ли вообще - еще не разобрался...

-~{}~ 03.06.05 00:29:

Должно работать: если вернет false, значит, ошибка, ибо в данном случае поиск по "или" гарантированно будет true возращать...

Похоже, автор - PhpDeveloper - был прав :)
 
Сверху