【问题标题】:Strip special characters and +1 from phone number从电话号码中去除特殊字符和 +1
【发布时间】:2017-09-21 14:37:30
【问题描述】:

我一直在尝试将电话号码验证为 5555555555 格式。我已经成功地去除了所有特殊字符的电话号码,但是如果使用 +15555555555 输入电话号码,该号码仍然在号码的开头包含“1”。无论如何要删除 +1 和特殊字符?

我当前的正则表达式是preg_replace('/^1|\D/', "", +15555555555);

任何帮助将不胜感激!

【问题讨论】:

  • str_replace('+1', '', $number); --- 但另一方面,+{countrycode}{number} 格式是国际电信联盟的标准化推荐 - - E.164 标准,所以可以保留它吗?
  • 好吧,为了完整起见,我想保留 10 位数字。我可能最终会这样做。感谢您的反馈!

标签: php regex phone-number


【解决方案1】:

您不需要正则表达式。

str_replace('+1', '', $string)

会做的。但是要解释为什么您的正则表达式当前失败,您的字符串不是以1 开头,而是以+1 开头,所以^1 不匹配。

当前使用演示:https://regex101.com/r/kwwp1r/1/

可能的正则表达式解决方案演示:https://regex101.com/r/kwwp1r/2/

^\+1

【讨论】:

  • 太棒了,谢谢!假设有人输入了 15555555555,是否有一个正则表达式或 str_replace 方法可以用来检查数字开头的“+1”和“1”?
  • 是的,^\+?1 将使+ 成为可选的。电话号码不能以1开头是否有规定?
【解决方案2】:

只需替换其中的 +1

$phone_num = "+15555555555";

$phone_num = preg_replace('/\+1/','',$phone_num);

echo $phone_num;

或者你可以使用 str_replace('+1','',$phone_num),或者。我总是出于习惯使用 preg_replace。

【讨论】:

    猜你喜欢
    • 2014-03-26
    • 2018-05-08
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多