2016-11-15 2 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)' Проверить [Руководство] (http://php.net/manual/en/function.filter- var.php) – bansi

ответ

1

Если вы настаиваете на использовании preg_match и не filter_var, то попробуйте следующее:

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

Edited добавить, что комментировал CD001.

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

+1

Возможно, хотите '+', а не '*' (не могу представить OP хочет, чтобы пустая строка совпадала, хотя вы никогда не знаете), но это делает то, что требуется ... oh, и '^ ... $', чтобы гарантировать, что ничего не подкралось. – CD001

+0

@ CD001 хорошо, кто знает. Пока это белый список :-) – Andreas

Смежные вопросы