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
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.
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With