2

我基本上是在尝试匹配 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

有没有可以满足这些要求的正则表达式?

4

3 回答 3

3
\d{9}(?:\d|X)

这是 9 位数字,后跟一个数字或“X”。

于 2012-09-20T20:25:18.260 回答
1

这应该有效:

[0-9]{9}[xX0-9]

或者更简洁的形式:

\d{9}[xX\d]
于 2012-09-20T20:25:59.513 回答
0

您将不得不使用后向查找来防止找到前面有更多数字的 9 位数字。

(?<!\d)\d{9}[\dxX]
于 2012-09-20T20:38:24.563 回答