0

我已经编写了一条 sql 语句来从 Mysql db 中检索数据,并且我想选择 myId 以三个 alpha 和 4 位数字开头的数据示例:ABC1234K1D2

myId REGEXP '^[A-Z]{3}/d{4}' 

但它给了我空的结果(数据在数据库中可用)。有人可以指出我正确的方法。

4

5 回答 5

3

在大多数正则表达式变体中,答案是:/d匹配 a/后跟 a d; 我想你想要\d哪个匹配一个数字。

然而,MySQL 的正则表达式实现有些有限(参见文档)。

没有像\d任何数字那样的字符集的捷径。

您需要使用命名字符集 ( [[:digit:]]),或者只使用[0-9].

于 2013-01-29T10:58:29.070 回答
2

试试这个:

[A-Z]{3}[0-9]{4}

如果您希望字符不区分大小写。试试这个 :

[a-zA-Z]{3}[0-9]{4}
于 2013-01-29T10:59:43.953 回答
1

首先,在则表达式中,要匹配一个数字,您必须使用\d而不是/d(这使您匹配/后跟d)。

然后,我从来没有注意到,但我认为\d(以及其他类似的\w,等等)似乎在 MySQL 中不可用。该文档列出了接受的空间字符,并且没有出现那些通用类。你可以[:digit:]改用,即使[0-9]很短;)

于 2013-01-29T11:11:47.857 回答
0

你做得很好,只需替换/d\d.
最终正则表达式:^[A-Z]{3}\d{4}

于 2013-01-29T11:00:41.597 回答
0

您可以使用以下模式:

^[a-zA-Z]{3}\d{4}
于 2013-01-29T11:09:20.540 回答