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