如何在php中编写用于html5表单数字输入验证的正则表达式模式?

如何在php中编写用于html5表单数字输入验证的正则表达式模式?,php,regex,html,Php,Regex,Html,我有一个表单,其中有许多表单字段是动态生成的,我正试图通过下面的代码将数字输入字段限制为最小值和最大值,这在firefox中不起作用 $products=getAllProducts();//an array of product objects echo '<form method="POST" action="">'; for($i=0;$i<(count($products));$i++){ echo '<label>'

我有一个表单,其中有许多表单字段是动态生成的,我正试图通过下面的代码将数字输入字段限制为最小值和最大值,这在firefox中不起作用

    $products=getAllProducts();//an array of product objects
    echo '<form method="POST" action="">';
    for($i=0;$i<(count($products));$i++){
        echo '<label>'.$products[$i].getName().'</label>';
        echo '<input type="number" pattern="\d*" min="1" max="'.$products[$i].getAvailableQty().'" name="'.$products[$i].getId().'"></input>';

    }
    echo '<input id="cartButton" type="submit" value="Submit" formaction="cart.php" />';
    echo '</form>';
$products=getAllProducts()//产品对象的数组
回声';

对于($i=0;$i),可以使用以下函数获取正则表达式

function getInputValidationRegex($qty){
    $qtyCopy=$qty;
    $regexpArr=array();
    $noOfDigits=strlen((String)$qty);

    for($i=1;$i<=$noOfDigits;$i++){
        if($i<$noOfDigits){
            $str='';

            if($i==1)
                $str.='[1-9]';
            else
                $str.='[0-9]{1,'.($i-1).'}';


        $regexpArr[]=$str;
        }
        if($i==$noOfDigits){
            $str='';
            for($k=1;$k<=$i;$k++){
                $lastDigit=$qtyCopy%10;
                $qtyCopy=floor($qtyCopy/10);
                if($k==$i){
                    $str2='[1-'.$lastDigit.']'.$str;
                    $str=$str2;
                }
                else{
                    $str2='[0-'.$lastDigit.']'.$str;
                    $str=$str2;
                }

            }
            $regexpArr[]=$str;
        }

    }
    return implode("|",$regexpArr);

}
函数getInputValidationRegex($qty){ $qtyCopy=$qty; $regexpArr=array(); $noOfDigits=strlen((字符串)$qty);
对于($i=1;$iSorry,如果我有误解。如果您只是试图确保用户输入的值不高于可用数量,则在这种情况下不需要正则表达式。只需在提交表单后验证输入的数量,或使用javascript。我希望即使java脚本关闭,也能在客户端验证它!生成的HTML看起来像什么?根据最新版本的支持。根据
$products[$i].getName()
$products[$i].getAvailableQty()
$products[$i].getId()
…例如
相机键盘
 $products=getAllProducts();//an array of product objects
    echo '<form method="POST" action="">';
    for($i=0;$i<(count($products));$i++){
        echo '<label>'.$products[$i].getName().'</label>';
        echo '<input type="number" pattern="'.getInputValidationRegex($products[$i].getAvailableQty()).'" name="'.$products[$i].getId().'"></input>';

    }
    echo '<input id="cartButton" type="submit" value="Submit" formaction="cart.php" />';
    echo '</form>';