我有以下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。:正则表达式的目的是从一个街道中获取门牌号,该街道的数字位于字符串中的任何位置。
答案 0 :(得分:3)
MySQL在Regexes中不支持\s
。
改为使用[[:space:]]
:
SELECT
"1 - 3" REGEXP "^[0-9]+[a-z]?([[:space:]]?\-[[:space:]]?[0-9]+[a-z]?)?$"
返回1
。