【问题标题】:How to count only digits length regex如何仅计算数字长度正则表达式
【发布时间】:2021-05-16 22:38:05
【问题描述】:

俄罗斯电话号码有 11 位数字,但我不能使用 a{11},因为电话号码可以包含括号和破折号
我的正则表达式:^([\+]?\d){1,2}([\(\-]*[0-9]{3}[\)\-]*)([0-9\-]{7,9})$
数字可以包含 1 到 2 个字符作为国家/地区代码
然后 3 位带括号的数字或不作为电话运营商代码
然后从 7-9 位带破折号或不带破折号

例如:

+7(994)849-45-16
+7(994)849-4516
+7(994)84945-16
+7994849-45-16

问题是,我如何计算正则表达式中数字的长度

【问题讨论】:

  • [0-9\-]{7,9} 替换为[0-9](?:-?[0-9]){6,8}。国家代码部分必须是\+?\d{1,2}
  • @WiktorStribiżew 它最多可以计算 14 位数字
  • 要将总位数限制为 11,请在 ^ 之后添加 (?!(?:\D*\d){12})

标签: regex


【解决方案1】:

你可以使用

^(?!(?:\D*\d){12})(\+?\d{1,2})([(-]*[0-9]{3}[)-]*)([0-9](?:-?[0-9]){6,8})$

regex demo

详情

  • ^ - 字符串开头
  • (?!(?:\D*\d){12}) - 字符串中不允许超过 11 位数字
  • (\+?\d{1,2}) - 第 1 组:可选的 +,然后是 1 位或 2 位数字
  • ([(-]*[0-9]{3}[)-]*) - 第 2 组:零个或多个 (- 字符,三位,然后又是零个或多个 )- 字符
  • ([0-9](?:-?[0-9]){6,8}) - 第 3 组:一个数字,然后出现 6 到 8 次可选的 - 和一个数字
  • $ - 字符串结束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    相关资源
    最近更新 更多