使用正则表达式验证电子邮件或手机

Validate email or mobile with regular expression

我有一个表单域。在该字段中,用户可以输入 EMAILMOBILE。从 PHP 页面我得到了价值。之后我想检查这是电子邮件 ID 还是手机号码。假设email表示我想发邮件成功,假设mobile表示我想显示移动成功,我想我们必须写正则表达式,但我不知道如何为这个问题写正则表达式?

 <form action="#" method="POST" id="forgotForm">
  <div class="form-group has-feedback">
    <input type="text" class="form-control" placeholder="Email OR Mobile" id="email" name="email" value="" aria-required="true" required="" data-msg-required="Please enter your email">
    <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
  </div>
  </form>

  home.php
  <?php
  $email=$_POST['email'];//here value it will come like 9986128658 or admin@gmail.com
  
  ?>

您可以检查该值是否为有效的电子邮件地址。如果是那么你有一封电子邮件,否则你可以假设它是一个 phone 号码:

$email = null;
$phone = null;

// The "email" field has been submitted
if (isset($_POST["email"])) {

    // If it is an email then set the email variable
    if (filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL)) {
        $email = filter_input(INPUT_POST, "email", FILTER_SANITIZE_EMAIL);
    }
    // If it is a number then set the phone variable
    else if (filter_input(INPUT_POST, "email", FILTER_VALIDATE_INT)) {
        $phone = filter_input(INPUT_POST, "email", FILTER_SANITIZE_NUMBER_INT);
    }
}

if ($email !== null) {
    echo "Submitted email: {$email}";
}
if ($phone !== null) {
    echo "Submitted phone number: {$phone}";
}

您可以使用 preg_match

检查输入
$email=$_POST['email'];

$emailPattern = '/^\w{2,}@\w{2,}\.\w{2,4}$/'; 
$mobilePattern ="/^[7-9][0-9]{9}$/"; 

if(preg_match($emailPattern, $email)){
    echo "Email Success!";
} else if(preg_match($mobilePattern, $email)){
    echo "Mobile Success!";
} else {
    echo "Invalid entry";
}
  1. 检查有效的电子邮件

    • 电子邮件应该至少有两个字的长度,比如 aa@aa.aa
    • TLD 应至少包含 2 个字符,最多包含 4 个字符
    • 要包含像 co.in 这样的域,请使用 - /^\w{2,}@[\w\.]{2,}\.\w{2,4}$/
  2. 检查有效手机

    • 手机应有 10 个字符长度,并且应以 7、8 或 9 开头,要取消该限制,请将 $mobilePattern 更改为 /^[0-9]{10}$/
  3. 如果它不是有效的电子邮件或手机,它会 returns 错误消息