我已经编写了一个sql语句来从Mysql数据库中检索数据,我想选择myId以三个alpha和4位数字开头的数据:ABC1234K1D2
myId REGEXP '^[A-Z]{3}/d{4}'
但它给我空结果(数据在DB中可用)。有人能指出我纠正的方式。
答案 0 :(得分:3)
在大多数正则表达式变体中,答案是:/d
匹配/
后跟d
;我想你想要\d
匹配一个数字。
然而,MySQL的正则表达式实现有限(参见documentation)。
任何数字都没有像\d
这样的字符集的快捷方式。
您需要使用命名字符集([[:digit:]]
),或者只使用[0-9]
。
答案 1 :(得分:2)
试试这个:
[A-Z]{3}[0-9]{4}
如果您希望字符不区分大小写。试试这个:
[a-zA-Z]{3}[0-9]{4}
答案 2 :(得分:1)
首先,在常规正则表达式中,要匹配数字,您必须使用\d
而不是/d
(这使您匹配/
后跟d
)。
然后,我从未注意到,但我认为\d
(以及其他像\w
等)似乎在MySQL中不可用。 doc列出了已接受的空间字符,并且不显示这些通用类。即使[:digit:]
非常短[0-9]
;)
答案 3 :(得分:0)
你做得很好,只需用/d
替换\d
。
最终正则表达式:^[A-Z]{3}\d{4}
答案 4 :(得分:0)
您可以使用以下模式:
^[a-zA-Z]{3}\d{4}