ウェブサイトで寄付用のフォームを作成しています。寄付フィールドを5〜500の金額のテキストボックスにし、他の通貨の場合は2000〜200000のテキストボックスにします。
4 に答える
ここでは正規表現を使用しないでください
チェックする方法が多すぎます。つまりx
、範囲内にあります。正規表現は、ここでパフォーマンスの問題を引き起こします。
これが実際の答えです
範囲 5 から 500 の正規表現:
/^(?:[5-9]|(?:[1-9][0-9])|(?:[1-4][0-9][0-9])|(?:500))$/
編集^2
ここで正規表現が重要な理由がわかりません。しかし、私はそれがどのように機能するかを説明します。
regex はパターン マッチング言語であるため、パターンのみを照合できます。ですから、その中に何らかのパターンを見つけなければなりません。
ここでのパターンは次のとおりです: 5-9 または 10-99 または 100-499 および 500.
したがって、正規表現がである場合/[5-9]/
、最初のものと一致します。こうして/[1-9][0-9]/
、/[1-4][0-9][0-9]/
そして/500/
来た。
しかし、データを複数回検証する必要がありますか?
いいえ、別のオプションがあります。
交替チェックにはパイプを使用します。
/[5-9]|([1-9][0-9])|([1-4][0-9][0-9])|(500)/
実際にはこれもうまくいくはずですが、キャプチャしないようにします。だから私は置く?:
これには正規表現を使用できますが、6 か月後にこれがどのように機能するかを覚えているかどうかを覚えておいてください。
^(500|[1-4][0-9][0-9]|[1-9][0-9]|[5-9])$
他の値も同様に機能します。上限から始めて文字どおりに指定します。次に、文字どおりに (またはこの場合は文字クラスを介して) 指定して、下限まで作業します。桁数が変わるたびに (例: 100 => 99)、新しい変更が必要になります。
ここで正規表現を使用する必要はありません。フォーム入力の値をキャプチャして、それを数値範囲と比較するだけです。これは JavaScript では非常に一般的なタスクであり、「フォーム検証」として知られています。
http://jsbin.com/ihoxut/2/edit
document.forms["myform"].onsubmit = function () {
var donationAmount = document.getElementById('donation').value;
if (donationAmount > 500) {
alert("Too high!");
return false;
} else if (donationAmount < 5) {
alert("Too low!");
return false;
} else {
alert("Just right!");
return false;
// You would actually want to return true for this one to submit the form, but that would break jsbin
}
};
正規表現を使用しないでください。
PHP を使用する場合は、次のようにします。
if (($currency == $currency1) && ($amount >= 5) && ($amount <= 500)) {
echo "Between 5 and 500 at currency 1";
} elseif (($currency == $currency2) && ($amount >= 2000) && ($amount <= 200000)) {
echo "Between 2000 and 200000 at currency 2";
} else {
echo "Not a valid amount";
}
もちろん、クライアント側のJavaまたは使用したい他の言語でも同様のことができます