使用正则表达式验证 ISBN 号
Use regex to verify an ISBN number
我需要一个正则表达式来验证用户输入的 ISBN 号。
ISBN 必须是一个字符串,只包含:
[10 or 13 digits] and hyphens
我尝试了 ^[\d*\-]{10}|[\d*\-]{13}$
但它不起作用。
我的正则表达式只匹配:978-1-5661
、1-56619-90
、1257561035
应该returns结果如下:
"978-1-56619-909-4 2" => false
"978-1-56619-909-4" => true
"1-56619-909-3 " => false
"1-56619-909-3" => true
"isbn446877428ydh" => false
"55 65465 4513574" => false
"1257561035" => true
"1248752418865" => true
非常感谢任何帮助。
您可以使用此正则表达式进行正向预测:
^(?=(?:\D*\d){10}(?:(?:\D*\d){3})?$)[\d-]+$
(?=(?:\D*\d){10}(?:(?:\D*\d){3})?$)
是一个积极的前瞻,确保我们在输入中有 10 或 13 个数字。
如已接受的答案中所述,并非所有 10 位或 13 位数字都是有效的 ISBN。
ISBN 由五组数字组成,共 13 位数字。 2007 年,标准从 10 位开始。这五个组可以接受各种长度的数字,这使得 ISBN 难以验证。
参考https://en.wikipedia.org/wiki/International_Standard_Book_Number
一个解决方案是这样的:
^(?:ISBN(?:-13)?:?\ )?(?=[0-9]{13}$|(?=(?:[0-9]+[-\ ]){4})[-\ 0-9]{17}$)97[89][-\ ]?[0-9]{1,5}[-\ ]?[0-9]+[-\ ]?[0-9]+[-\ ]?[0-9]$
资料来源:O'Reilly Regular Expressions Cookbook, 2nd edition
您可能会在这里找到许多可能的 ISBN 验证正则表达式:https://regexlib.com/Search.aspx?k=ISBN
我需要一个正则表达式来验证用户输入的 ISBN 号。
ISBN 必须是一个字符串,只包含:
[10 or 13 digits] and hyphens
我尝试了 ^[\d*\-]{10}|[\d*\-]{13}$
但它不起作用。
我的正则表达式只匹配:978-1-5661
、1-56619-90
、1257561035
应该returns结果如下:
"978-1-56619-909-4 2" => false
"978-1-56619-909-4" => true
"1-56619-909-3 " => false
"1-56619-909-3" => true
"isbn446877428ydh" => false
"55 65465 4513574" => false
"1257561035" => true
"1248752418865" => true
非常感谢任何帮助。
您可以使用此正则表达式进行正向预测:
^(?=(?:\D*\d){10}(?:(?:\D*\d){3})?$)[\d-]+$
(?=(?:\D*\d){10}(?:(?:\D*\d){3})?$)
是一个积极的前瞻,确保我们在输入中有 10 或 13 个数字。
如已接受的答案中所述,并非所有 10 位或 13 位数字都是有效的 ISBN。
ISBN 由五组数字组成,共 13 位数字。 2007 年,标准从 10 位开始。这五个组可以接受各种长度的数字,这使得 ISBN 难以验证。 参考https://en.wikipedia.org/wiki/International_Standard_Book_Number
一个解决方案是这样的:
^(?:ISBN(?:-13)?:?\ )?(?=[0-9]{13}$|(?=(?:[0-9]+[-\ ]){4})[-\ 0-9]{17}$)97[89][-\ ]?[0-9]{1,5}[-\ ]?[0-9]+[-\ ]?[0-9]+[-\ ]?[0-9]$
资料来源:O'Reilly Regular Expressions Cookbook, 2nd edition
您可能会在这里找到许多可能的 ISBN 验证正则表达式:https://regexlib.com/Search.aspx?k=ISBN