如何验证手机领域?

时间:2017-06-13 05:44:21

标签: php regex validation preg-match

如何验证以下格式的电话字段:

(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.'));
  }
}

1 个答案:

答案 0 :(得分: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 - 字符串的最后一部分。