2010-09-28 34 views
0

我正在創建一個有正則表達式提交給它的管理面板。關於如何驗證提交的正則表達式以瞭解它們是否工作的任何想法。當我說「看看他們是否工作」我的意思是,如果正則表達式是有效的並且編譯正確,而不是他們實際上匹配數據或不正確?你將如何去驗證正則表達式實際編譯和工作,即不會拋出錯誤?

僅供參考,這將在PHP中。

+0

正則表達式的正則表達式?只是在開玩笑;) – 2010-09-28 22:02:30

回答

2

檢查文檔後自己解決。

preg_match('/'.$pattern.'/', 'foobar foobar foobar'); 
if(preg_last_error() === PREG_NO_ERROR) 
{ 
    // ok 
} 
+0

這可能會打印錯誤,具體取決於您的配置設置。檢查我的答案,瞭解如何取消警告輸出。 – webbiedave 2010-09-28 22:07:25

+0

好點。乾杯。 – buggedcom 2010-09-28 22:18:52

2

preg_match返回布爾出錯虛假所以它檢查返回值(請確保您使用的=====)的一個簡單的事情,抑制報警輸出:

if (@preg_match('/some expression/', '') === false) { 
    // bad regex 
} 
1

另一種解決方案是慣於拋出警告,但使用醜陋的錯誤壓制...

$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);