MySQL REGEXP - 开始或结束锚点导致匹配失败

时间:2015-08-21 09:48:23

标签: mysql regex

MySQL中的

我有以下Regexp:

"^[0-9]+[a-z]?(\s?\-\s?[0-9]+[a-z]?)?$"

我测试它的字符串是"1 - 3"(任何数字都应该在这里工作),产生以下MySQL:

SELECT
"1 - 3" REGEXP "^[0-9]+[a-z]?(\s?\-\s?[0-9]+[a-z]?)?$"

导致false。问题是,在我的正则表达式模式中,这不是一个错误,因为如果我在开始时删除true或在结尾处删除^,结果为$

这是一个错误,如果有,是否有解决方法?或者我做错了什么?

提前致谢!

Ps。:正则表达式的目的是从一个街道中获取门牌号,该街道的数字位于字符串中的任何位置。

1 个答案:

答案 0 :(得分:3)

MySQL在Regexes中不支持\s

改为使用[[:space:]]

SELECT
"1 - 3" REGEXP "^[0-9]+[a-z]?([[:space:]]?\-[[:space:]]?[0-9]+[a-z]?)?$"

返回1