Xml ISBN 13的正则表达式

Xml ISBN 13的正则表达式,xml,regex,xsd,isbn,Xml,Regex,Xsd,Isbn,大家好,我一直在尝试在我的.xsd中为XML创建一个正则表达式 此表达式应验证ISBN-13编号,但我无法获得更多信息: ISBN (978|979)[ |-][0-9]{1,5}[ |-][0-9]{1,7}[ |-][0-9]{1,7}[0-9]{1} 如果有人填写了正确的ISBN13,这是可以的,但是仍然可以制作更长的ISBN(例如,仍然可以制作第一组数字5长,第二组数字7长,第三组数字7长) 我对这个话题很陌生,我不能解决这个问题,所以我希望有人能帮助我或解决我的问题 我知道ISBN1

大家好,我一直在尝试在我的.xsd中为XML创建一个正则表达式

此表达式应验证ISBN-13编号,但我无法获得更多信息:

ISBN (978|979)[ |-][0-9]{1,5}[ |-][0-9]{1,7}[ |-][0-9]{1,7}[0-9]{1}
如果有人填写了正确的ISBN13,这是可以的,但是仍然可以制作更长的ISBN(例如,仍然可以制作第一组数字5长,第二组数字7长,第三组数字7长)

我对这个话题很陌生,我不能解决这个问题,所以我希望有人能帮助我或解决我的问题

我知道ISBN13是由什么组成的,我查阅了维基百科和其他网站,但我真正的问题是它本身的正则表达式

我希望这不是早些时候问的,所以如果有人早些时候问这个问题,我很抱歉。 jajay07

根据正则表达式

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$)))
匹配旧的10位ISBN和新的13位ISBN

您可以很容易(可能不是很容易)使用这个regexp中您需要的部分

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

我们已经创建了一个XML模式 ISBNs的simpleType定义。这 ISBN的定义涵盖了所有的法律 全球ISBNs的格式


我在同一个页面上发现了这个解决方案,不幸的是,它不能与我的xml和XSD一起工作。您对此解决方案的确切问题是什么?也许这是我非常有限的正则表达式技能,但我无法理解这个解决方案是如何建立的,或者如何通过我的方法实现的,我还想了解它的作用,而不仅仅是复制粘贴。。此外,我不能有ISBN10。该字段可能只包含ISBN13如果您不想要10位版本,那么dmnkhhn有一个更好的答案。我只是耦合了这个来尝试它,但在ISBN出现错误后xsd不会验证。也许我太傻了,但这一整天都在驱动着我,有人能解释一下这部分中“发生了什么事”\x20*(?=.{17}$)97(?:8 | 9)如果我需要表达式来匹配不包含标题“ISBN”部分的模式呢?只需删除
ISBN(?-13)?:?\x20*
部分