• ベストアンサー

正規表現のパターンマッチについて

201以上の数字を入力されたときに、アラートが出るようにしたいのですが、下記の記述だと300からの数字になり =~ /^[3-9]{1,}[0-9]{2,}/ ) =~ /^[2-9]{1,}[0-9]{2,}/ ) だと199までの入力でアラートが出てしまいます。 201以上を入力されたときの正規表現はどのように書いたらよろしいのでしょうか? 正規表現の記述自体をいまいち把握出来ておりませんので、出来ましたら解説もいただけるとありがたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • M0NSTER
  • ベストアンサー率22% (2/9)
回答No.2

すみません。 こちらも不注意でした。 201以上でしたら、以下です。 200~300を他の3桁と分けました。 =~ /^(2[0-9][1-9]|[3-9][0-9]{2,}|[1-9][0-9]{3,})$/ )

yas_usa
質問者

お礼

15分ほど見て考えて、3つに分けた理由と意味が分かりました。 3つ目が見落としていた部分?でしたので助かりました。 ご回答本当にありがとうございます。

その他の回答 (1)

  • M0NSTER
  • ベストアンサー率22% (2/9)
回答No.1

数値型にコンバートしてから比較ができるのであれば、 無理に文字列で比較するよりも、数字なら数値で 比較した方が楽な場合が多いと思います。 どのように使用されるのかわからないため、 一例として前後の表記を揃えて以下としました。 =~ /^([2-9][0-9]{2}|[1-9][0-9]{3,})$/ ) 200以上の3桁数字と4桁以上の数字で分けています。 そうしないと1234などが対象外になってしまうので。 $をつけた場合、「321」はアラートが出ますが 「321a」はアラートが挙がりません。 つけるかは入力される値としてどこまで許容され、 どこまでがアラートの対象になるかに寄ると思います。 また、199までの入力でアラートが出てしまいましたか? 正規表現以外で何か問題は存在しないのでしょうか。

yas_usa
質問者

補足

ご回答ありがとうございます。 4桁以上の数字、文字は、別の記述で !~ /^[0-9]{0,3}$/) で回避していました。 また、すみません。 =~ /^[2-9]{1,}[0-9]{2,}/ ) この記述だと200以上でアラートが出てしまい、200は許容と言うことです。 許容される値は、 空白と0~200までで、その他の文字は一切NGです。 どういう状況で使いたいのかは、 テキストボックスに0から200までの数字のみを入力させたいのですが、201以上の数字は弾くと言う形で使いたいと思っています。

関連するQ&A