每个人都需要只允许使用字符串,数字和点“。”。在我的电子邮件中
'email' => 'required|string|email|unique:users|not_regex:/^.+$/i|regex :/^.+@.+$/i',
我的代码此处不允许使用“。”我只允许“。”并阻止其他人 [#/ \ $%^&*等]
答案 0 :(得分:1)
如今,您实际上不需要正则表达式来验证由电子邮件地址组成的字符串,该电子邮件地址应仅包含字母,数字以及@和点符号。当您两次应用filter_var()时,PHP会进行适当的验证,首先是对数据进行清理,然后再次进行验证,如下所示:
<?php
// Variables to check
$emailA = "john1.doe@example.com";
$emailB = "john1.doe@example#.com";
// Remove all illegal characters from email
$emailValid = filter_var($emailA, FILTER_SANITIZE_EMAIL);
$emailInvalid = filter_var($emailB, FILTER_SANITIZE_EMAIL);
// Validate e-mail
if (filter_var($emailValid, FILTER_VALIDATE_EMAIL)) {
echo("$emailValid is a valid email address"),"\n";
} else {
echo("$emailValid is not a valid email address");
}
if (filter_var($emailInvalid, FILTER_VALIDATE_EMAIL)) {
echo("$emailInvalid is a valid email address");
} else {
echo("$emailInvalid is not a valid email address");
}
请参见live code
注意,如果这段代码看起来很熟悉,我承认我修改了给定here的示例:)
但是,如果您坚持使用正则表达式,则可以使用以下一种方法:
<?php
$emailA = "john1@here.com";
$emailB = "john1@here#.com";
function validateEmail( $email ){
$regex = "/^[a-zA-Z0-9.]+@[a-zA-Z0-9.]+\.[a-zA-Z]{2,4}/";
$error = "\nOnly letters, numbers, dot and @ are allowed";
echo (preg_match($regex,$email))? "$email is valid\n" : "$error - $email is invalid\n";
return true;
}
validateEmail( $emailA );
validateEmail( $emailB );
请参见live code
无论电子邮件有效还是无效,validateEmail()返回true似乎都有些奇怪。如果需要验证该函数是否实际执行,则返回值可能很有用;参见示例here。