我正在我的网站上创建一个表格用于捐款我希望将捐款字段作为一个文本框,其中任意金额的价值在5到500之间,其他货币在2000到200000之间请帮助
答案 0 :(得分:3)
请勿在此处使用正则表达式
有太多方法需要检查,即x
在一个范围内。正则表达式会导致性能问题。
这是实际答案
范围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)/
实际上这也应该可以正常工作,但我让它们不受限制。所以我把?:
答案 1 :(得分:1)
你可以使用正则表达式,但请记住,在6个月内你是否会记住它是如何工作的。
^(500|[1-4][0-9][0-9]|[1-9][0-9]|[5-9])$
您的其他值的功能类似:从上限开始并按字面指定;然后向下工作到下限,从字面上指定它(或者在这种情况下通过字符类)。数字的每次改变(例如100 => 99)都需要新的替换。
答案 2 :(得分:0)
您不需要在此处使用正则表达式。只需捕获表单输入的值,然后将其与您的数字范围进行比较。这是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
}
};
答案 3 :(得分:-2)
不要使用正则表达式。
如果你使用php do:
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中执行类似操作