2013-01-19 62 views
3

我有几个PHP的正则表达式,我用它来匹配ISBN 10,但我找不到一个兼容MySQL的REGEXP,有人可以帮我匹配在MySQL 10中的ISBN 10吗?regexp mysql函数

我已经试过这一个(在PHP中,但不能在MySQL中的作品)

"^(97(8|9))?\d{9}(\d|X)$" 

下面是我对运行此正则表达式的一些值:

ISBN10: 0470945176 
by Paul D. Kimmel 
Publisher: John Wiley & Sons 
Copyright year: © 2011 

Thomas E. Creighton (Author) 
ISBN-10: 0471153028 
Publisher: Wiley-Interscience; 1 edition (April 8, 1999) 
2878 pages 
+0

@eggyal我增加了一些值,我正在运行它对 – user1989379

回答

3

在MySQL正则表达式中不存在\d快捷方式。使用[[:digit:]]字符类来代替:

"^(97(8|9))?[[:digit:]]{9}([[:digit:]]|X)$" 

见它sqlfiddle

+0

伟大的答案和伟大的链接! – user1989379

+0

如果有一个尾随X,它应该是大写。因此,如果使用这个正则表达式,使用'REGEXP BINARY“^(97(8 | 9))?[[:digit:]] {9}([[:digit:]] | X)$”',区分大小写。 – fooquency

+0

整件事也可以缩写为'^(97 [89])?[0-9] {9} [0-9X] $'。 – eggyal