我正在我的网站上创建一个用于捐赠的表格我希望捐赠字段成为一个文本框,其中包含 5 到 500 之间的任何金额的金额,以及 2000 到 200000 之间的其他货币,请帮助。
4 回答
此处不要使用正则表达式
有太多方法可以检查 iex
是否在一个范围内。正则表达式在这里会导致性能问题。
这是实际的答案
范围 5 到 500 的正则表达式:
/^(?:[5-9]|(?:[1-9][0-9])|(?:[1-4][0-9][0-9])|(?:500))$/
编辑^2
我不知道为什么正则表达式在这里很重要。但我会解释它是如何工作的。
由于正则表达式是一种模式匹配语言,我们只能用它来匹配模式。所以,我们必须在其中找到一些模式。
这里的模式是: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或你想使用的任何其他语言中做类似的事情