【问题标题】:Regex for checking price format用于检查价格格式的正则表达式
【发布时间】:2017-07-29 19:54:41
【问题描述】:

我的表单正在进行长时间的验证,除了价格验证以确保它是正确的格式,它基本上是一系列数字,后跟一个小数点和另外 2 个数字,即12.00 或 112.00 或 124.53 等

这是我的代码,它还检查字段是否已设置且不为空,以及产品名称是否已存在。

 <?php


    if(isset($_POST['submit']) && isset($_POST['product-name']) &&     !empty($_POST['product-name']) && isset($_POST['description']) && !empty(trim($_POST['description'])) && isset($_POST['price']) && !empty($_POST['price']) && isset($_POST['category']) && !empty($_POST['category']) && isset($_POST['spice']) && !empty($_POST['category']) && isset($_POST['date-added']) && !empty($_POST['date-added'])){
                    $product_name = trim($_POST['product-name']);
        $description = trim($_POST['description']);
                    $price = $_POST['price'];
        $category = $_POST['category']; 
                    $spice = $_POST['spice'];  
                    $date_added = $_POST['date-added'];  
          $pattern = '/^\d+(?:\.\d{2})?$/';
          $pattern1 = '/^([1-9][0-9]*|0)(\.[0-9]{2})?$/';
          
   if(preg_match($pattern, $price)){
    $error = "<script language='javascript'>
        window.onload = function(){
            var divs = document.getElementById('error');
            divs.innerHTML = '<p style = \"color:#FF0000\">Price is in the  wrong format, correct format e.g. 10.00</p>';
        }
        </script>";

  }

  if(!isset($error)){
        $rows = getProductName($product_name);
                    if($rows > 0){
                                     echo "<script language='javascript'>
        window.onload = function(){
            var divs = document.getElementById('error');
            divs.innerHTML = '<p style = \"color:#FF0000\">Product name already exists!</p>';
        }
        </script>";
                    } else{
                        
                          insertProduct($product_name, $description, $price, $category, $spice, $date_added) ;
                    
                      echo "<script language='javascript'>
        window.onload = function(){
            var divs = document.getElementById('error');
            divs.innerHTML = '<p style = \"color:#FF0000\">Record Inserted Successfully!</p>';
        }
          </script>";
                    
               }
  } else{
       echo $error;
   }


   } else{ echo "<script language='javascript'>
        window.onload = function(){
            var divs = document.getElementById('error');
            divs.innerHTML = '<p style = \"color:#FF0000\">Please fill out all required (*) fields!</p>';
        }
          </script>";
   }


  ?>

这很可能很简单,但我似乎看不出问题出在哪里。

更新:

表单太长,但这是一个包含以下字段的压缩版本:

<form method="post" action="addProduct.php">
  <ul class="form-style-1">
    <div id="error"></div>
    <h2>Add Product</h2>
    <li> <label>Price: <span class="required">*</span></label> <input type="text" name="price" class="field-long" placeholder="Enter Price" /> </li>
</form>

Hydra 在 2017-03-10 03:06:52Z 对answer 的评论添加

【问题讨论】:

    标签: php mysql regex validation


    【解决方案1】:

    我想您忘记了!exclamation mark,因为您想确定您的值是否与特定模式匹配:

    if(!preg_match($pattern, $price))
    

    你也可以使用is_float()函数,如果值为float则返回true,否则返回false

    【讨论】:

    • 我认为问题不在于检查本身,我认为由于某种原因它没有被击中,因此根本没有检查验证。
    • 你的 HTML 表单!
    • 表单太长,但这是字段:

        添加产品

    • 表单的其余部分在哪里。请将您的 html 代码添加到您的问题中,以便社区成员可以帮助您。
    猜你喜欢
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    相关资源
    最近更新 更多