是否有正則表達式來檢查一個字符串是否是一個有效的PHP正則表達式?有效的正則表達式模式的PHP正則表達式
在我的應用程序的後臺,管理員定義了數據類型,他可以將模式定義爲正則表達式。例如/^[A-Z][a-zA-Z]+[a-z]$/
和前臺,我使用此模式驗證用戶條目。 在我的代碼使用PHP preg_match
功能
preg_match($pattern, $user_entries);
第一個參數必須是有效的PHP正則表達式,我怎麼可以肯定的是$模式是因爲它有效的正則表達式在我的後臺辦公用戶entrie。
有什麼想法?
一個警告有關允許的執行任意正則表達式:如果只有管理員可以定義正則表達式,並且管理員知道正則表達式的方式,那麼它應該沒問題。但請注意,正則表達式和數據的「正確」組合可能會導致災難性的回溯,從本質上阻止了您的應用程序。例如,正則表達式*。*。*。*。*。*。*。* ^'將使您的正則表達式引擎在超過幾個字符的任何字符串上保持*長*時間的繁忙(應用於> 590.000次迭代例如,「1111111111111111」)。 –
更糟糕的是,如果正則表達式與'preg_replace'一起使用,則使用'/ e'修飾符替換將被評估爲PHP代碼。 – ThiefMaster