问题描述
我有一个在 PHP 代码中运行良好的正则表达式。当我将它与 MysqL 查询一起使用时,它会引发错误。
^(?:(?:\+|0{0,2})61(\s*[\-]\s*)?|[0]?)?[4]\d{8}$
请帮我把它转换成 MysqL 兼容的正则表达式。
解决方法
您可以使用以下查询在 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
然后是任意八位数字 -
$
- 字符串结束。