【问题标题】:Regex for Mobile number手机号码的正则表达式
【发布时间】:2011-08-25 10:59:53
【问题描述】:

我需要一个具有以下规格的正则表达式:

  1. 允许的字符:
    (空格)、()+、0-9
  2. ( 可以是修剪后的第一个字符,如 (+61) 312 405 678+61 312 405 678
  3. 长度:最少 8 个字符,最多 16 个 - 在出现边界条件时显示错误。

【问题讨论】:

    标签: java regex jakarta-ee


    【解决方案1】:

    我宁愿坚持标准,也不会重新发明轮子。您可以使用一个特殊的库来处理称为libphonenumber的电话号码

    【讨论】:

    • 我们不能使用额外的库,因为我们只有这么小的需求
    • 然后从该库中取出代码并直接粘贴,如果许可同意则修改
    • 有人可以帮帮我吗??
    【解决方案2】:

    试试这个

    reg exp: ^(\(\+\d{2}\)|\+\d{2})[ -]?(\d{3}[ -]?){2}\d{3}$
    

    【讨论】:

      【解决方案3】:

      不是重复的,但this 可能会给出一些答案。我的方法是去掉不是数字的字符(除了+),然后根据它处理正则表达式。应该更容易处理。

      你也可以试试http://regexlib.com

      【讨论】:

      • 我需要这个正则表达式来验证!剥离字符是我将在验证完成后执行的任务。
      • @Hardik Handa 在验证之前最好去掉它们,这样你就可以忽略格式怪癖,只接受人们输入的数字。节省尝试匹配您选择的输入电话号码格式的令人沮丧的用户体验!
      • 这会破坏应用程序的同步性
      【解决方案4】:

      根据您的规范,这个正则表达式可以工作:

      [-+\d() ]{8,16}
      

      这也将匹配 (--++--),因此您可能需要更改/澄清您的规范。

      此外,正则表达式不会“显示错误”,它们唯一要做的就是匹配与否。

      【讨论】:

      • 但我们还必须看到,如果括号是打开的,那么它必须是关闭的,并且如果它们是一个左括号,+ 只能排在第一位或第二位!你指定的正则表达式所做的是设置最小和最大长度,并允许那些特殊字符的休息条件被完全忽略,感谢朋友的努力:))
      猜你喜欢
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 2013-04-30
      相关资源
      最近更新 更多