Mysql 中正则匹配错误 [Err] 1139

2017-03-04 23:59:44 +08:00
 anonymoustian

我在使用 MYSQL 中的正则匹配域名时,出现了错误:

[Err] 1139 - Got error 'repetition-operator operand invalid' from regexp

正则表达式是:

WHERE lt_sh_a_graph.rvalue REGEXP "^(www.)?(?:a-zA-Z0-9.)[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$"

该正则用于匹配 二级域名或者带 www 的三级域名

例如

baidu.com

www.baidu.com

而其他的则过滤掉

请问这个错误应该怎么处理?

6292 次点击
所在节点    MySQL
1 条回复
ltux
2017-03-05 20:14:52 +08:00
1, mysql 的正则表达式不支持 non-capturing group (?:XYZ) 这种语法
2, 即使去掉 ?:,你的正则表达式依旧不对。给你个参考:
^(www\.)?([a-z0-9]+(-[a-z0-9]+)*\.)[a-z]{2,}$

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/344997

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX