我目前正在开发一个名为开销的小型Web应用程序,可以通过php数组将您的费用节省到mysql数据库。
以下是它的工作原理。
在第一页中,您必须输入要将费用保存到mysql数据库的项目数。
因此,我们假设您输入3作为项目数量,您将被重定向到另一个页面,您将获得文本框,您将在其中输入项目的名称及其相应的金额,然后单击在保存按钮上将其保存到数据库中。
那么,我如何限制文本框的数量只接受数字字符和点,以便数字字符必须开始,然后是一个点(这是可选的),它也必须以数字字符结尾。
例如100.8,250.4,250,300.8,200。
这是我的代码
foreach ($amount as $digit)
{
if((!ctype_digit($digit)) || ($digit<1) || (!preg_match("/[\.]$/",$digit)))
{
echo " Only positive, numeric, non-zero digits and a dot are allowed for amount of item";
exit();
}
}
如果你能帮我纠正这个问题,我会很高兴,因为我已经和我争斗了2天了。
答案 0 :(得分:0)
您的任务的正确模式是:
"^[1-9]\\d*(\\.\\d+)?$"
表示任何非零数字后跟任意数量的数字,并且可选地后跟一个点后跟至少一个数字。
也就是说,假设$ amount包含&#34; 123.45&#34;,您的代码应为:
if (!preg_match("^[1-9]\\d*(\\.\\d+)?$", $amount)
{
echo " Only positive numbers are allowed for amount of item";
exit();
}
此外,您应该将引用字符串中的所有反斜杠加倍:
"/[\\.]$/"
因为你的构造
"/[\.]$/"
表示程序收到字符串
/[.]$/