2016-11-15 42 views
-3

我想檢查一個字符串是否包含不需要的字符。 我想只允許一個只包含@ _ a-z的字符串。 我想如果字符串包含任何東西,除了這個字符會給我一個錯誤的輸出。我想檢查一個字符串,如果字符串不包含我期望的字符,它將返回true。如何使用preg_match將白名單字符串?

我試着用preg_match來做到這一點。但無法做到這一點。我認爲preg_match不是我需要的功能。請建議我達到我的願望目標的最佳方式。

$text='Hel&o'; 
if(!preg_match("/[email protected]_[a-zA-Z0-9]/", $text)){ 
return false; 
}else { 
return true; 
} 
+2

這是*驗證電子郵件地址的一個很好的例子。 – CD001

+0

http://www.w3schools.com/php/filter_validate_email.asp – Andreas

+0

爲什麼不使用'filter_var($ email,FILTER_VALIDATE_EMAIL)'檢查[Manual](http://php.net/manual/en/function.filter- var.php) – bansi

回答

1

如果你堅持使用的preg_match不filter_var,那就試試這個:

/^[[email protected]_]+$/

編輯補充什麼CD001評論。

http://www.phpliveregex.com/p/hSI

+1

可能想要一個'+'而不是'*'(想象不到OP想要一個空字符串來匹配,雖然你永遠不知道),但這是做什麼請求...哦,和'^ ... $',以確保沒有偷偷摸摸。 – CD001

+0

@ CD001好,誰知道。只要它是白名單:-) – Andreas

相關問題