[英]Regular expression for allowed characters
我需要檢查,如果我的PHP代碼中的字符串僅包含指定的字符列表。 但是由於其中一些可能需要花scape,我只是無法使其發揮作用。 我已經嘗試了所有方法,但是卻行不通...
所需的驗證是:
基本上,我想檢查是否有一個未知的ascii字符(我不知道是否已經有一個函數可以做到這一點)。
我的代碼現在是這樣的:
if(preg_match("/[A-Za-z0-9\.\#\-\+\*\\\/\=\_\%\$\(\)]/", $cmd) === false)
那么,所有字符都是特殊的嗎?
不,所有這些字符都不特殊。 如果不確定,可以讓PHP使用preg_quote()
進行轉義:
$regex = '/[A-Za-z0-9' . preg_quote( '.%^&()$#@!/-+/', '/') . ']+/';
if( !preg_match( $regex, $cmd))
另外, preg_match()
返回一個int
,並且您正在對布爾值執行===
,因為它們永遠不會是同一類型,所以永遠不會成立。 您可以簡單地檢查if( !preg_match())
。
if(preg_match("/[.%^&()$#@!/+-a-zA-Z\\d\\s]+/", $cmd) === false)
並且是否需要錨if(preg_match("/^[.%^&()$#@!/+-a-zA-Z\\d\\s]+$/", $cmd) === false)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.