Regex 根据窗体上的选择创建不同的正则表达式

Regex 根据窗体上的选择创建不同的正则表达式,regex,forms,Regex,Forms,目前我正在做我的项目的付款形式。现在,我正在基于表单上的选择创建正则表达式。以下是付款单的代码 <h1>Payment </h1> <fieldset> <legend> <font size="6">Please input your payment information correctly</font> </legend> <p> <form action="" method="

目前我正在做我的项目的付款形式。现在,我正在基于表单上的选择创建正则表达式。以下是付款单的代码

<h1>Payment </h1>
<fieldset>
<legend> 
    <font size="6">Please input your payment information correctly</font>
</legend>
<p>
<form action="" method="post">
    <ul>
        <li>
            Your Reservation Number: <?php echo $reservation_id;?><br>
            <input type="hidden" name="reservation_id" value="<?php echo $reservation_id;?>">
            <input type="hidden" name="roomtype" value="<?php echo $roomtype;?>">
            <input type="hidden" name="num_of_rooms" value="<?php echo $num_of_rooms;?>">
            <input type="hidden" name="dor" value="<?php echo $dor;?>">
            <input type="hidden" name="dco" value="<?php echo $dco;?>">
            <input type="hidden" name="length_of_stay" value="<?php echo $length_of_stay;?>">
        </li>
        <li>
            Bank in From: <br>
            <select name="bank_in_from" id="bank_in_from">
            <option value="">Select</option>
            <option value="Bank A">Bank A</option>
            <option value="Bank B">Bank B</option>
            <option value="Bank C">Bank C</option>

          </select>
        </li>
        <li>
            Account No.: <br>
            <input type="text" name="acc_no">
        </li>
        <li>
            Holder Name: <br>
            <input type="text" name="holder_name">
        </li>



          <input type="submit" value="Submit">
  <input type="reset" value="Clear" >
        <li>

    </ul>
案件是这样的

如果用户选择银行A,如果数字不小于或大于12,则可接受acc编号表格 如果用户选择银行B,如果数字不小于或大于10,则可接受acc编号表格 如果用户选择银行C,如果数字不小于或大于9,则可接受acc编号表格 所有帐号都是明显的数字,没有字母或任何特殊字符


代码看起来怎么样?

处理这个问题的一个非常简单的方法是使用一个变量来表示您希望使用的不同正则表达式模式

因此,大致如下:

switch($chosen_bank){
        case('bankA'):
             $appropriate_regex = '\d{12}';
             break;
        case('bankB'):
             $appropriate_regex = '\d{10}';
             break;
        case('bankC'):
             $appropriate_regex = '\d{9}';
             break;
 }

 // then you'll need something like:

 $submitted_string = $_POST['submitted_bank_number'];
 $pattern = "/$appropriate_regex/";
 preg_match($pattern, $submitted_string, $matches, PREG_OFFSET_CAPTURE);
 print_r($matches);
这将产生:

   Array
   (
       [0] => Array
           (
               [0] => 1234563820
           )

   )
因此,您可以使用

   $target_bank_number = $matches[0][0];
你应该可以从那里得到它

至于首先获得这些变量,您可以在

由于您在表单标记中指定了action=,您可以在页面下方包含以下内容来处理用户提交:

<?php

    if ($_POST){
          $php_varA    = $_POST['submitted_form_valueA'];
          $chosen_bank = $_POST['chosen_bank'];

          //here process the input using regular expressions/ database access, etc, etc

    }     

?>
?>