您的位置:首页 > 编程语言 > Python开发

Python 正则表达式验证ISBN

2014-07-31 13:59 267 查看
ISBN-10

^
(?:ISBN(?:-10)?:?\ )?        # Optional ISBN/ISBN-10 identifier.
(?=                          # Basic format pre-checks (lookahead):
[0-9X]{10}$                #  Require 10 digits/Xs (no separators).
|                          # Or:
(?=(?:[0-9]+[-\ ]){3})    #  Require 3 separators
[-\ 0-9X]{13}$            #    out of 13 characters total.
)                            # End format pre-checks.
[0-9]{1,5}[-\ ]?             # 1-5 digit group identifier.
[0-9]+[-\ ]?[0-9]+[-\ ]?     # Publisher and title identifiers.
[0-9X]                       # Check digit.
$

eg.
0-596-52068-7
ISBN-10 0-596-52068-7


ISBN-13
^
(?:ISBN(?:-13)?:?\ )?        # Optional ISBN/ISBN-13 identifier.
(?=                          # Basic format pre-checks (lookahead):
[0-9]{13}$                 #  Require 4 separators
|                           # Or:
(?=(?:[0-9]+[-\ ]){4})     #  Require 4 separators
[-\ 0-9]{17}$             #    out of 17 characters total.
)                            # End format pre-checks.
97[89][-\ ]?                 # ISBN-13 prefix.
[0-9]{1,5}[-\ ]?             # 1-5 digit group identifier.
[0-9]+[-\ ]?[0-9]+[-\ ]?     # Publisher and title identifier.
[0-9]                        # check digit.
$


ISBN-10 or ISBN-13

# ISBN-10 or ISBN-13
^
(?:ISBN(-1(?:(0)|3))?:?\ )?
(?(1)
(?(2)
# ISBN-10
(?=[0-9X]{10}$|(?=(?:[0-9]+[- ]){3})[- 0-9X]{13}$)
[0-9]{1,5}[- ]?[0-9]+[- ]?[0-9]+[- ]?[0-9X]
|
# ISBN-13
(?=[0-9]{13}$|(?=(?:[0-9]+[- ]){4})[- 0-9]{17}$)
97[89][- ]?[0-9]{1,5}[- ]?[0-9]+[- ]?[0-9]+[- ]?[0-9]
)
|
# No explicit idntifier; allow ISBN-10 or ISBN-13
(?=[0-9X]{10}$|(?=(?:[0-9]+[- ]){3})[- 0-9X]{13}$|97[89][0-9]{10}$|
(?=(?:[0-9]+[- ]){4})[- 0-9]{17}$)
(?:97[89][- ]?)?[0-9]{1,5}[- ]?[0-9]+[- ]?[0-9]+[- ]?[0-9X]
)
$
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: