我想使用preg_match()在PHP上进行一些模式匹配。我希望我的用户从他们的移动设备输入金额。因此,如果他们想要输入50.50,他们可以输入50 * 50(这里的星号是手机上的实际星号按钮)。所以我想检查一些验证的输入。主要 1.所有输入必须是数字(不包括星号) 2.星号后的小数点数应为2。 3.十进制数字是可选的。这意味着用户可以输入50或50.50两者都应该有效。
到目前为止我所拥有的是这个。if( preg_match( "_\d{1,6}(\*\d{2})_" , $input) {//do something}
。这段代码部分工作,问题是我不能使子模式搜索可选。我查看了手册但找不到任何东西。我需要帮助,谢谢你
答案 0 :(得分:1)
在?
之后添加)
以使其可选。 ?
用作量词意味着"零或一个" - 即。可选的。
作为旁注,我不知道有任何移动设备有浏览器,但不允许您轻松键入.
...
答案 1 :(得分:0)
$array = array("50.50", "50", "50*50", "4");
foreach($array as $number)
{
if (preg_match('/^[\d]{2}(\.|\*)?([\d]{2})?/sim', $number)) {
echo $number ." VALID ";
} else {
echo $number ." INVALID ";
//Do something with the invalid number
}
}
输出:50.50 VALID 50 VALID 50*50 VALID 4 INVALID