【问题标题】:JS Regex for full name and phone全名和电话的 JS 正则表达式
【发布时间】:2020-12-23 00:56:41
【问题描述】:

你能帮我用正则表达式吗:

  1. 全名 - 可以是英文或希伯来文 [\u0590-\u05FF]-这是希伯来文字母范围。

    需要2个或更多字, 每个单词至少包含一个字母 (不分大小写)

示例:Roei Grin,R G,roei grin,r G,roei gr iN,

"רועי גרין","רו ג", רועי גרי ן"

  1. 电话号码- 必须是 10 位数字。 必须以 0 开头 可以(不是必须)在第三位或第四位有“-”字符。 示例:0549129393、058-9210348、0266-391059

【问题讨论】:

    标签: javascript regex ecmascript-6 ecma


    【解决方案1】:

    这是两者的解决方案。名称和数字有好例子,其次是坏例子:

    const testNames = [
      'Roei Grin',
      'R G',
      'roei grin',
      'r G',
      'roei gr iN',
      'רועי גרי ן',
      'רו ג',
      'רועי גרין',
      'Bad'
    ];
    const testNumbers = [
      '0549129393',
      '058-9210348',
      '0266-391059',
      '1111',
      '011111111',
      '0999999-999',
      '09999999999'
    ];
    const nameRegex = /^[a-zA-Z\u0590-\u05FF]+( [a-zA-Z\u0590-\u05FF]+)+$/;
    const numberRegex = /^0(\d{9}|\d{2}-\d{7}|\d{3}-\d{6})$/;
    
    console.log('testNames:')
    testNames.forEach(str => {
      console.log('- "' + str + '"  ==> ' + nameRegex.test(str));
    });
    console.log('testNumbers:')
    testNumbers.forEach(str => {
      console.log('- "' + str + '"  ==> ' + numberRegex.test(str));
    });

    输出:

    testNames:
    - "Roei Grin"  ==> true
    - "R G"  ==> true
    - "roei grin"  ==> true
    - "r G"  ==> true
    - "roei gr iN"  ==> true
    - "רועי גרי ן"  ==> true
    - "רו ג"  ==> true
    - "רועי גרין"  ==> true
    - "Bad"  ==> false
    testNumbers:
    - "0549129393"  ==> true
    - "058-9210348"  ==> true
    - "0266-391059"  ==> true
    - "1111"  ==> false
    - "011111111"  ==> false
    - "0999999-999"  ==> false
    - "09999999999"  ==> false
    

    nameRegex的解释:

    • ^ ... $ - 锚点在字符串的开头和结尾
    • [a-zA-Z\u0590-\u05FF]+ - 以 1+ 个字母和/或希伯来语字符开头
    • ( [a-zA-Z\u0590-\u05FF]+)+ - 后跟 1+ 模式:单个空格,后跟 1+ 字母和/或希伯来语字符

    numberRegex的解释:

    • ^ ... $ - 锚点在字符串的开头和结尾
    • 0 - 以 0 开头
    • (\d{9}|\d{2}-\d{7}|\d{3}-\d{6}) - 后跟:
      • 9 位数
      • 或2位,-,7位
      • 或 3 位,-,6 位

    【讨论】:

    • @Roei Grinshpan:这符合您的需求吗?有什么问题吗?
    【解决方案2】:

    您可以使用此 reg exp 为您的面具手机 - ^[0]{1}(([\d]{2}[-]{0}[\d]{7})|([\d]{3}[-]{1}[\d]{6})|([\d]{2}[-]{1}[\d]{7}))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 2017-09-23
      • 2012-01-27
      • 1970-01-01
      • 2014-02-15
      相关资源
      最近更新 更多