4

正規表現に問題があります。バス番号を入力したときにユーザー入力を検証したい。

例:37、37A、37S、37A / L、16A / 250、16A/250Kなど

私が思いついた正規表現は

(^\d{1,3}[A-Z]{0,3})|(^[\d{1,3}[A-Z]{0,3}\/\d{0,3}[A-Z]{0,3}])

37、37A、37Sを検証しますが、37A/Lの検証は失敗します。誰かが私がこれでどこが間違っているのか教えてもらえますか?

注:テキストボックスに正規表現バリデーターを使用しています。これをValidationExpressionに配置しました。

4

3 に答える 3

2

キャラクターをエスケープする必要はありません/。次のことを試してください。

(^\d{1,3}[A-Z]{0,3}(?:/\d{0,3}[A-Z]{0,3})?)

さらに、EOS文字を指定することにより、行全体が正規表現と一致するように強制できます。

(^\d{1,3}[A-Z]{0,3}(?:/\d{0,3}[A-Z]{0,3})?$)

@MaxwellTroyMiltonKingがコメントで指摘しているように、正規表現全体を囲む括弧は不要です。

^\d{1,3}[A-Z]{0,3}(?:/\d{0,3}[A-Z]{0,3})?$
于 2013-03-25T12:21:15.453 に答える
2

文字列の終わりが指定されていないため、問題が発生していました。

これに置き換えて、

(^\d{1,3}[A-Z]{0,3}$)|(^\d{1,3}[A-Z]{0,3}\/\d{0,3}[A-Z]{0,3}$)

お役に立てれば。

于 2013-03-25T12:21:46.170 に答える
0

これを試して:

^(\d{1,3}[A-Z]{0,3})(\/\d{0,3}[A-Z]{0,3})?$
于 2013-03-25T12:24:10.660 に答える