我基本上尝试匹配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
是否有正则表达式可以满足这些要求?
答案 0 :(得分:3)
\d{9}(?:\d|X)
这是9位数,后跟数字或'X'。
答案 1 :(得分:1)
这应该有效:
[0-9]{9}[xX0-9]
或者更简洁的形式:
\d{9}[xX\d]
答案 2 :(得分:0)
您必须使用lookbehind来防止找到前面有更多数字的9位数字。
(?<!\d)\d{9}[\dxX]