Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regular expression for an ISBN 13

Tags:

regex

xml

xsd

isbn

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

like image 962
user534202 Avatar asked Dec 07 '10 20:12

user534202


3 Answers

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.

like image 109
terminus Avatar answered Oct 04 '22 02:10

terminus


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

like image 35
dmnkhhn Avatar answered Oct 04 '22 02:10

dmnkhhn


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.

like image 23
Istao Avatar answered Oct 04 '22 00:10

Istao