Как бы вы проверили, что регулярное выражение на самом деле компилируется и работает, то есть не выдает ошибку? - PullRequest
0 голосов
/ 29 сентября 2010

Я создаю панель администрирования, в которую отправлено регулярное выражение.Любые идеи о том, как я мог бы проверить представленные регулярные выражения, чтобы увидеть, работают ли они.Когда я говорю «посмотреть, работают ли они», я имею в виду, что регулярные выражения действительны и правильно компилируются, а не то, что они на самом деле соответствуют данным или нет?

К вашему сведению, это будет в PHP.

Ответы [ 3 ]

2 голосов
/ 29 сентября 2010

preg_match возвращает логическое значение false при ошибке, поэтому просто проверить возвращаемое значение (убедитесь, что вы используете ===, а не ==) и подавить вывод предупреждения:

if (@preg_match('/some expression/', '') === false) {   
    // bad regex
}
2 голосов
/ 29 сентября 2010

Решил сам после проверки документов.

preg_match('/'.$pattern.'/', 'foobar foobar foobar');
if(preg_last_error() === PREG_NO_ERROR)
{
    // ok
}
1 голос
/ 29 сентября 2010

Другое решение, которое не выдает предупреждение, но использует ужасную ошибку подавления ...

$good_re = '~\d+~';
$bad_re = '@#$';

$good_check = @preg_match( $good_re, 'asdd' );
var_dump($good_check);

$bad_check = @preg_match( $bad_re, 'asdd' );
var_dump($bad_check);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...