【问题标题】:Regex fomat phone (+00) 000 000 00 00 | (+00) 000-000-00-00 ​正则表达式格式电话 (+00) 000 000 00 00 | (+00) 000-000-00-00 ​
【发布时间】:2021-07-05 12:38:35
【问题描述】:

您好,我想找到一个完成这两种格式的正则表达式:

(+00) 000 000 00 00

(+00) 000-000-00-00 ​

我正在尝试这个(?:\+\s*\d{2}[\s-]*)?(?:\d[-\s]*){10}/,但它没有按我想要的方式工作,你能帮我吗?我正在使用 ruby​​,我正在使用 https://rubular.com/ 探索这个正则表达式。

【问题讨论】:

  • /\A\(\+\d{2}\) \d{3}([ -])\d{3}\1\d{2}\1\d{2}\z/? rubular.com/r/bRvOkb3sMEtGyE
  • 如果您不想反向引用捕获组,您可以使用/\A\(\+\d{2}\) \d{3}(?: \d{3}(?: \d{2}){2}|-\d{3}(?:-\d{2}){2})\z/Ref.
  • 这个正则表达式有什么用?扫描文件?如果是输入验证,那么您应该从字符串中删除不是数字的任何内容。

标签: regex ruby regex-group


【解决方案1】:

你可以使用

/\A\(\+\d{2}\) \d{3}([ -])\d{3}\1\d{2}\1\d{2}\z/
/\A\(\+\d{2}\)\s\d{3}([\s-])\d{3}\1\d{2}\1\d{2}\z/

请参阅Rubular demo。请注意,\s 匹配空格、制表符、换行符、任何空格。

更多细节

  • \A - 字符串开头
  • \(\+ - (+ 子字符串
  • \d{2} - 两位数
  • \) - 一个 ) 字符
  • \s - 一个空格
  • \d{3} - 三位数
  • ([\s-]) - 第 1 组:空格或 - 字符
  • \d{3} - 三位数
  • \1 - 对第 1 组的反向引用:与第 1 组中的值相同
  • \d{2} - 两位数
  • \1 - 对第 1 组的反向引用:与第 1 组中的值相同
  • \d{2} - 两位数
  • \z - 字符串结束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多