Как проверить, является ли строка допустимым PCRE?

Мне нужно проверить, является ли строка допустимым регулярным выражением.

Есть ли способ сделать это без проблем с производительностью?

NB: Я хочу проверить его, прежде чем использовать его, preg_last_error () не то, что я ищу.

Предложенный preg_last_error не будет работать для вас, потому что он возвращает только ошибки среды выполнения PCRE, а не ошибки компиляции. В последнем случае все, что вы получаете, – это предупреждение php («Ошибка компиляции»). Чистый способ обойти это – установить обработчик ошибок с ошибкой и исключить , а затем скомпилировать шаблон в блоке try-catch:

 try { preg_match($pattern, "..."); } catch(ErrorException $e) { // something is wrong with the pattern } 

Лучший способ – это просто попытаться запустить и скомпилировать его с помощью механизма Regex и проверить наличие ошибок. Я бы не стал беспокоиться о производительности, прежде чем понадобится.

В php я использую следующую функцию для проверки действительности pcre:

 function BoolTestPregRegex($Regex) { $Result = @preg_match("/$Regex/", '1234567890123'); if ($Result === false) return false; else return true; }