Regular expression for an ISBN 13

北慕城南 提交于 2019-11-28 01:19:41

问题


Hi all I'm trying all the time to make a regular expression for XML in my .xsd.

This expression should verify an ISBN-13 number but I couldn't get further than this:

ISBN (978|979)[ |-][0-9]{1,5}[ |-][0-9]{1,7}[ |-][0-9]{1,7}[0-9]{1}

This is ok if somebody fills in a correct ISBN13, but it is also still possible to make ISBNs which are much longer (for example it is still possible to make the first block of numbers 5 long and the second 7 digits and the third also 7 digits long).

I am very new to this topic and I cannot solve this problem, therefore I hope somebody could help me or solve my problem.

I know what an ISBN 13 consists of, I checked wikipedia and other websites, but my actual problem is the regular expression it self.

I hope that this wasnt asked earlier, so I am sorry if somebody asked this question earlier. jajay07


回答1:


According to http://regexlib.com/REDetails.aspx?regexp_id=1747 the regular expression

ISBN(-1(?:(0)|3))?:?\x20+(?(1)(?(2)(?:(?=.{13}$)\d{1,5}([ -])\d{1,7}\3\d{1,6}\3(?:\d|x)$)|(?:(?=.{17}$)97(?:8|9)([ -])\d{1,5}\4\d{1,7}\4\d{1,6}\4\d$))|(?(.{13}$)(?:\d{1,5}([ -])\d{1,7}\5\d{1,6}\5(?:\d|x)$)|(?:(?=.{17}$)97(?:8|9)([ -])\d{1,5}\6\d{1,7}\6\d{1,6}\6\d$)))

matches both the old 10 digit ISBNs and the new 13 digit ISBNs.

You can easily (maybe not very easily) use the part of this regexp that you need.




回答2:


ISBN(?:-13)?:?\x20*(?=.{17}$)97(?:8|9)([ -])\d{1,5}\1\d{1,7}\1\d{1,6}\1\d$

Should match:
ISBN-13: 978-1-4028-9462-6
ISBN: 978-1-4028-9462-6
ISBN-13 978-1-4028-9462-6
ISBN 978-1-4028-9462-6




回答3:


See also ISBN on xFront :

We have created an XML Schema simpleType definition for ISBNs. This ISBN definition covers all the legal formats of ISBNs world-wide.



来源:https://stackoverflow.com/questions/4381514/regular-expression-for-an-isbn-13

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!