1

正規表現があるとしましょう。私の場合は、英国の車のナンバープレートと一致することがわかりました。

^([A-Z]{3}\s?(\d{3}|\d{2}|d{1})\s?[A-Z])|([A-Z]\s?(\d{3}|\d{2}|\d{1})\s?[A-Z]{3})|(([A-HK-PRSVWY][A-HJ-PR-Y])\s?([0][2-9]|[1-9][0-9])\s?[A-HJ-PR-Z]{3})

典型的な英国の自動車登録は

HG53CAY

これは正規表現によって正しく一致しますが、私がやりたいのは、これのプレフィックスサブストリングを一致させる方法を見つけることです。したがって、以下はすべて有効です。

H, HG, HG5, HG53, HG53C, HG53CA, HG53CAY

これを達成するための提案された方法はありますか?

4

1 に答える 1

1

まず、正規表現を次のように書き直します。

^([A-Z]{3}\s?(\d{1,3})\s?[A-Z])|([A-Z]\s?(\d{1,3})\s?[A-Z]{3})|(([A-HK-PRSVWY][A-HJ-PR-Y])\s?([0][2-9]|[1-9][0-9])\s?[A-HJ-PR-Z]{3})

\d{3}|\d{2}|d{1}パーツは意味をなさないので、書く必要があります\d{1,3}

正規表現を次のように書き直します

^([A-Z]{0,3}\s?(\d{0,3})\s?[A-Z]?)|([A-Z]\s?(\d{0,3})\s?[A-Z]{0,3})|(([A-HK-PRSVWY][A-HJ-PR-Y]?)\s?([0]?[2-9]?|[1-9]?[0-9]?)\s?[A-HJ-PR-Z]{0,3})

登録の最初だけの一致を許可するという望ましい効果があるはずですが、残念ながら、ほとんどの文字をオプションにする必要があったため、完全な登録が有効なものになる保証はありません。

あなたはおそらくこのようなことを試すことができます

^(([A-Z]{3})|[A-Z]{1,2}$)\s?((\d{1,3})|$))...

各部分が完全であるか、不完全$であるが正規表現でで表される「文字列の終わり」が続くことを要求するようにします。

于 2013-03-25T12:25:24.470 に答える