簡體   English   中英

PHP preg_match 用於驗證 10 位手機號碼

[英]PHP preg_match for validating 10 digit mobile number

我正在嘗試使用 PHP 函數 preg_match 驗證 10 位手機號碼。 下面的代碼不會產生任何輸出。

是正則表達式錯誤嗎? 或者我使用不當。

我期待輸出中的Hi True 如果匹配或Hi False如果不匹配。

<?php
$value = '9987199871';
$mobileregex = "/^[1-9][0-9]{10}$/" ;  
echo "Hi " . preg_match($mobileregex, $value) === 1; // @debug
?>

正則表達式取自https://stackoverflow.com/a/7649835/4050261

您所說的正則表達式將匹配十一個數字,而不是十個數字。 由於所有印度手機號碼都以 9、8、7 或 6 開頭,因此我們可以使用以下正則表達式:

^[6-9][0-9]{9}$

這是您更新的代碼片段:

$value = '9987199871';
$mobileregex = "/^[6-9][0-9]{9}$/" ;  
echo "Hi " . preg_match($mobileregex, $value) === 1;

請注意,就驗證而言,上述正則表達式可能仍遠非我們所能做到的最好,但至少是一個開始。

以下代碼片段將檢查手機號碼數字是否在 10-15 位以內,包括開頭的“+”和后跟非零的第一位數字。

正則表達式

"/^[+]?[1-9][0-9]{9,14}$/"

代碼片段

// Validation for the mobile field.
function validateMobileNumber($mobile) {
  if (!empty($mobile)) {
    $isMobileNmberValid = TRUE;
    $mobileDigitsLength = strlen($mobile);
    if ($mobileDigitsLength < 10 || $mobileDigitsLength > 15) {
      $isMobileNmberValid = FALSE;
    } else {
      if (!preg_match("/^[+]?[1-9][0-9]{9,14}$/", $mobile)) {
        $isMobileNmberValid = FALSE;
      }
    }
    return $isMobileNmberValid;
  } else {
    return false;
  }
}

^正則表達式的符號表示開始
[+]? 確保在開始時允許使用單個(或零)+ 符號
[1-9]確保第一位數字是非零數字
[0-9]{9,14}將確保有 9 到 14 位數字
$表示結束

$mob = "9513574562";
if(preg_match("/^\d+\.?\d*$/",$mob) && strlen($mob)==10){

echo 1;

}else{

 echo 0;

}

preg_match() 檢查它是否是整數,在 strlen() 中它檢查這個字符串中沒有數字。 如果滿足 2 個條件,則為 10 位有效手機號碼

對於巴基斯坦手機號碼,正則表達式代碼如下

^[9][2][3][0-9]{9}$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM