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桁で、その後に1桁または「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 に答える