【发布时间】:2012-09-13 06:34:25
【问题描述】:
我基本上是在尝试匹配 10 个字符的 ISBN,到目前为止,我能够匹配任何 10 个字符长的字符串,但在将字符串识别为 ISBN 时并不准确
一个 10 字符长的 isbn 可以有 9 个起始数字并以字母结尾或有 10 个数字, 例如
0273737025
027373702X
如果最后一个字符是字母,则始终为X
我目前所拥有的
[a-zA-Z0-9]{10,10}
这个正则表达式将能够从像
这样的字符串中提取 isbn"asjdh - asd a - dsa- 0273737025" = 0273737025
但也会提取长度为 10 个或更多字符的任何其他内容
"asjdh - asd a - dsa- myveryearly" = myveryearl
有没有可以满足这些要求的正则表达式?
【问题讨论】:
-
"string" 可以包含数字和其他字符。您应该指定“字母”或类似的东西,例如“如果最后一个字符是字母……”
-
ISBN 有校验位,你不必在这里重新发明轮子
-
@Dagon 这与问题无关
-
“但将字符串识别为 ISBN 并不准确” 这正是校验位的用途
-
@Dagon 我的意思是它可以检测任何 10 个字符长的单词。