【问题标题】:Combine regex for mobile number validation结合正则表达式进行手机号码验证
【发布时间】:2019-03-21 08:38:01
【问题描述】:

场景:前端验证 - 手机号码必须是数字,必须以'02'开头,至少有8个?数字字符,限制为 13 个?数字字符

例子:

MSISDN 错误消息 021123 请输入有效的沃达丰手机号码, 091234567 请输入有效的沃达丰手机号码, 02112345678910 请输入有效的沃达丰手机号码, abcdefghijkl 请输入有效的沃达丰手机号码, 021$123456 请输入有效的沃达丰手机号码

此外,当我在输入字段中输入数字时,数字的格式应为 021 055555。前三个数字后的空格。

谁能帮我为此类示例构建一个正则表达式?

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    我相信这个正则表达式会执行你需要的匹配:

    const numbers = [
      "023 45678901",
      "023 456789012",
      "023 4567890123",
      "033 45678901",
      "013 45678901",
      "013 45",
      "013 45678901234567",
    ]
    
    const numberIsValid = number => !!number.match(/02\d\s\d{5,10}/)
    
    console.dir(numbers.map(numberIsValid))

    下面是正则表达式的每个部分的作用:

    02 从字面上匹配字符 02(区分大小写)

    \d 匹配一个数字(等于 [0-9])

    \s 匹配任何空白字符(等于 [\r\n\t\f\v ])

    \d{5,10} 匹配一个数字(等于 [0-9])

    {5,10} Quantifier — 匹配 5 到 10 次,尽可能多,按需回馈(贪心)

    【讨论】:

      【解决方案2】:

      这样的事情会有所帮助

      input.match(/^02[0-9]{6,11}$/)
      

      解释:输入显然是输入。 ^ 确保这是要匹配的字符串的开始位置。 [0-9] 表示后面的字符必须在 0 到 9 之间,{6-11} 表示这些字符可以重复 6 到 11 次。末尾的$ 表示字符串必须在此处结束。

      【讨论】:

        猜你喜欢
        • 2014-04-18
        • 1970-01-01
        • 1970-01-01
        • 2018-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-22
        相关资源
        最近更新 更多