2010-12-07 58 views
4

大家好我一直在嘗試爲我的.xsd中的XML創建正則表達式。ISBN 13的正則表達式12

這種表達應該確認的約285 | 210號碼,但我不能比這再得到:

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

這是確定的,如果有人在一個正確的系列名罷了,但也還是有可能製作的ISBN這要長得多(例如,仍然可以使第一個數字塊長5個,第二個7個數字,第三個也是7個數字長)。

我對這個話題很陌生,我無法解決這個問題,所以我希望有人能幫助我解決我的問題。

我知道什麼是ISBN 13組成,我查了維基百科和其他網站,但我的實際問題是正則表達式它自己。

我希望以前沒有問過,所以如果有人早些時候提出這個問題,我很抱歉。 jajay07

回答

6

根據http://regexlib.com/REDetails.aspx?regexp_id=1747正則表達式

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。

你可以很容易地(也許不是很容易)使用你需要的這個正則表達式的一部分。

+0

我發現這個解決方案也在同一頁面,不幸的是它不適用於我的xml和我的xsd – user534202 2010-12-07 21:07:23

+0

你對這種溶劑的確切問題是什麼? – terminus 2010-12-07 21:08:37

3
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-13 978-1-4028-9462 -6
ISBN 978-1-4028-9462-6

2

ISBN參見xFront:

我們已經創建了一個XML Schema 簡單類型defin用於ISBN的ition。這個 國際標準圖書編碼的定義覆蓋了全球所有合法的 格式的ISBN。