我正在創建一個有正則表達式提交給它的管理面板。關於如何驗證提交的正則表達式以瞭解它們是否工作的任何想法。當我說「看看他們是否工作」我的意思是,如果正則表達式是有效的並且編譯正確,而不是他們實際上匹配數據或不正確?你將如何去驗證正則表達式實際編譯和工作,即不會拋出錯誤?
僅供參考,這將在PHP中。
我正在創建一個有正則表達式提交給它的管理面板。關於如何驗證提交的正則表達式以瞭解它們是否工作的任何想法。當我說「看看他們是否工作」我的意思是,如果正則表達式是有效的並且編譯正確,而不是他們實際上匹配數據或不正確?你將如何去驗證正則表達式實際編譯和工作,即不會拋出錯誤?
僅供參考,這將在PHP中。
檢查文檔後自己解決。
preg_match('/'.$pattern.'/', 'foobar foobar foobar');
if(preg_last_error() === PREG_NO_ERROR)
{
// ok
}
這可能會打印錯誤,具體取決於您的配置設置。檢查我的答案,瞭解如何取消警告輸出。 – webbiedave 2010-09-28 22:07:25
好點。乾杯。 – buggedcom 2010-09-28 22:18:52
preg_match返回布爾出錯虛假所以它檢查返回值(請確保您使用的===
不==
)的一個簡單的事情,抑制報警輸出:
if (@preg_match('/some expression/', '') === false) {
// bad regex
}
另一種解決方案是慣於拋出警告,但使用醜陋的錯誤壓制...
$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);
正則表達式的正則表達式?只是在開玩笑;) – 2010-09-28 22:02:30