2017-06-13 68 views
2

我如何可以驗證手機領域的以下格式:如何驗證手機領域?

(999) 999-9999 

我試圖與以下,但無法正常工作。

if(array_key_exists('phone', $values) && $values['phone'] != '') 
{ 
    if(!preg_match('/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/', $values['phone'])) 
    { 
    $form_state->setErrorByName('phone', t('Please enter a valid phone number.')); 
    } 
} 

回答

2

你幾乎做到了:在{3}應該量化[0-9]和字面括號應該用一個反斜槓添加轉義:

if(array_key_exists('phone', $values) && !empty($values['phone'])) 
    { 
    if(!preg_match('/\A\([0-9]{3}\) [0-9]{3}-[0-9]{4}\z/', $values['phone'])) 
    { 
     $form_state->setErrorByName('phone', t('Please enter a valid phone number.')); 
    } 
    } 

我也建議使用!empty($values['phone'])\A/\z錨點總是匹配字符串的開始/結束。

regex demo

  • \A - 字符串錨
  • \(的明確的開始 - 一個開放的括號
  • [0-9]{3} - 3位數
  • \) - 一個右括號
  • - 一個空間
  • [0-9]{3} - 3位數字
  • - - 連字符
  • [0-9]{4} - 4位數字
  • \z - 字符串的末尾。
+1

它的工作完美。謝謝! – ARUN