2010-12-07 10 views
4

Hallo alle ich versuche die ganze Zeit einen regulären Ausdruck für XML in meinem .xsd zu machen.Regulärer Ausdruck für eine ISBN 13

soll dieser Ausdruck eine ISBN13 Nummer verifiziert, aber ich konnte nicht weiter als diese:

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

Das ist in Ordnung, wenn jemand in einem korrekten ISBN13 füllt, aber es ist auch noch möglich, ISBN-Nummern zu machen die sind viel länger (zum Beispiel ist es immer noch möglich, den ersten Block der Zahlen 5 lang und die zweiten 7 Ziffern und die dritte auch 7 Ziffern lang).

Ich bin sehr neu zu diesem Thema und ich kann dieses Problem nicht lösen, deshalb hoffe ich, dass jemand mir helfen oder mein Problem lösen könnte.

Ich weiß, woraus eine ISBN 13 besteht, ich habe wikipedia und andere Webseiten überprüft, aber mein eigentliches Problem ist der reguläre Ausdruck selbst.

Ich hoffe, dass dies nicht früher gefragt wurde, so tut mir leid, wenn jemand diese Frage früher gestellt hat. jajay07

Antwort

6

Nach http://regexlib.com/REDetails.aspx?regexp_id=1747 dem regulären Ausdruck

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 sowohl die alten 10-stellige ISBN-Nummern und die neuen 13-stellige ISBN-Nummern.

Sie können (möglicherweise nicht sehr einfach) den Teil dieser Regexp verwenden, den Sie benötigen.

+0

Ich fand diese Lösung auch auf der gleichen Seite, leider funktioniert es nicht mit meinem Xml und meinem Xsd – user534202

+0

Was ist Ihr genaues Problem mit dieser Lösung? – terminus

+0

vielleicht sind es meine sehr begrenzten regEX-fähigkeiten, aber ich kann nicht verstehen, wie dieser aufgebaut ist oder wie ich von meiner ansprache herkommen kann, ich will auch verstehen, was das tut und nicht nur kopie kopieren .. neben dem muss ich nicht habe ISBN10. Das Feld darf nur ISBN13 – user534202

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

Sollte entsprechen:
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

+0

Ich habe gerade diesen hier gepatcht, um es zu versuchen, aber das Xsd überprüft nicht, nachdem die ISBN einen Fehler verursacht. vielleicht bin ich zu blöd aber das fährt den ganzen tag, kann mir jemand erklären was in diesem teil "passiert" \ x20 * (? =. {17} $) 97 (?: 8 | 9) – user534202

+0

Was wenn ich den Ausdruck brauche um Muster zu finden, die nicht die Überschrift "ISBN" enthalten? –

+0

Entfernen Sie einfach den 'ISBN (?: - 13)?:? \ X20 *' Teil – dmnkhhn

2

Siehe auch ISBN auf xFront:

Wir haben ein XML-Schema simple defin erstellt ition für ISBNs. Diese ISBN Definition umfasst alle legalen Formate von ISBNs weltweit.