正则表达式错误ISBN 10

时间:2012-06-03 09:11:19

标签: php regex

我有以下正则表达式用于ISBN-10

^[0-9]{9}[[0-9]|X|x]$^

它似乎与所有数字一起工作正常,但是当引入字母时它会给我字母,例如ISBN 047146158X在数组中返回X,

有人可以用我的表达来帮助我吗?

这就是数据的样子

startISBN 10-047146158X Author(s): Stephen R. Bolsover, Jeremy S. Hyams, Elizabeth A. Shephard, Hugh A. White, Claudia G. Wiedemann Publisher- Wiley 27 JAN 2004

2 个答案:

答案 0 :(得分:2)

要么

[0-9]{9}([0-9]|X|x)

或只是

[0-9]{9}[0-9Xx]

[]括号与其中的单个字符匹配,嵌套它们并不能达到您想要的效果。括号()标记一个组,您可以使用|字符分隔不同的选项,但由于您只查找一个字符,因此您可以将所有内容放在括号中。

^表示“行首”,$表示“行尾” - 如果您在开头和结尾都有,那么正则表达式只匹配 如果输入中没有其他内容。

答案 1 :(得分:1)

尝试这种模式

\b[0-9]{9}[0-9Xx]\b