【问题标题】:How to validate phone field?如何验证电话字段?
【发布时间】:2017-06-13 05:44:21
【问题描述】:

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

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

【问题讨论】:

    标签: php regex validation preg-match


    【解决方案1】:

    你几乎做到了:{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 - 字符串的最后。

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多