【问题标题】:Regex to support toll free numbers along with UAE numbers正则表达式支持免费电话号码以及阿联酋号码
【发布时间】:2021-05-17 11:14:40
【问题描述】:

我有一个验证阿联酋数字的正则表达式,例如:00971585045336 这是正则表达式: /00971(?:50|51|52|53|54|55|56|57|58|59|2|3|4|6|7|9)\d{7}$/

我需要添加对免费电话号码的支持,例如: 00971800382499530097180022988

我不擅长正则表达式,所以我需要帮助才能使它成为可能。 提前致谢。

【问题讨论】:

  • 您所在国家/地区的免费电话号码格式是什么?

标签: javascript regex validation


【解决方案1】:

您可以使用以下正则表达式,假设免工具号码格式为 00971800,后跟 5 位或 8 位数字。您的原始正则表达式已使用字符类进行了简化。测试显示 4 个有效数字,然后是无效数字:

const regex = /^00971((5\d|[234679])\d{7}|800(\d{5}|\d{8}))$/;
[
  '00971581234567',
  '0097171234567',
  '0097180012345',
  '0097180012345678',
  '0097158123456',
  '009715812345678',
  '009717123456',
  '00971712345678',
  '00971800123456',
  '009718001234567',
].forEach((str) => {
  let valid = regex.test(str);
  console.log(str + ' ==> ' + valid);
});

输出:

00971581234567 ==> true
0097171234567 ==> true
0097180012345 ==> true
0097180012345678 ==> true
0097158123456 ==> false
009715812345678 ==> false
009717123456 ==> false
00971712345678 ==> false
00971800123456 ==> false
009718001234567 ==> false

解释:

  • ^ - 字符串开头
  • 00971 - 期待文字
  • ( - 起始组,用于逻辑或
    • ( - 起始组,用于逻辑或
      • 5\d - 期望 5,后跟一个数字
      • | - 或
      • [234679] - 具有允许数字的单个字符的字符类
    • ) - 组结束
    • \d{7} - 7 位数字
    • | - 或
    • 800 - 文字文本
    • ( - 起始组,用于逻辑或
      • \d{5} - 5 位数字
      • | - 或
      • \d{8} - 8 位数字
    • ) - 组结束
  • ) - 组结束
  • $ - 字符串结束

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-23
    • 2014-02-15
    • 2016-02-02
    • 2011-12-14
    • 2013-05-26
    • 1970-01-01
    • 2015-07-20
    相关资源
    最近更新 更多