首页 > 解决方案 > 将 PHP 兼容的正则表达式转换为 MySql 兼容的正则表达式 - 提取澳大利亚手机号码

问题描述

我有一个在 PHP 代码中运行良好的正则表达式。当我将它与 MYSQL 查询一起使用时,它会引发错误。

^(?:(?:\+|0{0,2})61(\s*[\-]\s*)?|[0]?)?[4]\d{8}$

请帮我把它转换成 MYSQL 兼容的正则表达式。

标签: mysqlregexposixpcre

解决方案


您可以使用以下查询在 MySQL 中提取澳大利亚手机号码(以 4、+61、61、04 等开头)

^(([+]|0{0,2})61([[:space:]]*-[[:space:]]*)?|0?)?4[0-9]{8}$

详情

  • ^- 字符串的开始
  • (- 第一组开始:
    • ([+]|0{0,2})- 组 2 匹配+或零,一个或两个零
    • 61-61字符串
    • ([[:space:]]*-[[:space:]]*)?- 一个可选的第 3 组,匹配用零个或多个空格括起来的连字符
  • |- 或者
    • 0?- 一个可选的零
  • )?- 第一组结束,这是可选的,因为?
  • 4[0-9]{8}-4然后是任意八位数字
  • $- 字符串结束。

推荐阅读