不能让我的正则表达式验证我的HTML表单

时间:2013-10-03 09:00:29

标签: php html regex

我有一个带有一些客户端验证和一些服务器验证(正则表达式)的html表单。 但是我不能让正则表达式使用html表单,并且可以在没有任何输入的情况下提交表单。我已经被困在这几个小时了,唉。谁能理解为什么?

这是HTML表单

    <form action="brukerinfo.php" method="post" name="kontaktskjema" id="kontaktskjema">

        <h3>Registrer din informasjon her</h3>
        <div>
                <label>
                        <span>Fornavn: (påkrevd)</span>
                        <input name="fornavn" id="fornavn" placeholder="Fornavn" type="text" tabindex="1" pattern="^[a-zA-ZæøåÆØÅ]{2,}$"
                        title="Fornavn er påkrevd, og må være minst 2 tegn" required autofocus> 
                </label>
        </div>
        <div>
                <label>
                        <span>Etternavn: (påkrevd)</span>
                        <input name="etternavn" id="etternavn" placeholder="Etternavn" type="text" tabindex="2" pattern="^[a-zA-ZæøåÆØÅ]{2,}$"
                        title="Etternavn er påkrevd, og må være minst 2 tegn og kan ikke bestå av mellomrom" required>
                </label>
        </div>
        <div>
                <label>
                        <span>Email:</span>
                        <input name="email" id="email" type="email" placeholder="Skriv inn din mailadresse"  tabindex="3">
                </label>
        </div>
        <div>
                <label>
                        <span>Telefon: (påkrevd) </span>
                        <input name="telefon" id="telefon" placeholder="Skriv inn ditt telefonnummer" type="tel" tabindex="4" 
                         pattern="[0-9]{8}" title="Må bestå av 8 siffer" required>
                </label>
        </div>
          <div>
                <label> 
                        <span>DOB:</span>
                        <input name="fdag" id="fdag" type="date" tabindex="5" required>
                </label>
        </div>

        <div>
                <button name="submit" type="submit" id="kontaktskjema-submit">Send inn</button>
        </div>

</form>
</div>
</div>

enter code here

这是我的正则表达式验证,

 <?
//preg_match for email
    $email = $_POST['email'];
    $emailregex = '[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}';

    if(isset($_POST['email'])) {
    if (!preg_match($emailregex, $email)) {
       echo 'invalid email';
    }
     }

    //validating the phone number
    $telefon = $_POST ['telefon'];
    $telmatch = array('98979695' ,'97969594','90807090','90908080','40908070','45674849','46573823','45343456');

    if(isset($_POST['telefon'])){
        if(!preg_match($telefon, $telmatch)){

            echo 'invalid phone number';

            }
        }

    //validatin the date
    $fdag = $_POST['fdag'];

    if(isset($_POST['fdag'])) {

    if(preg_match('/(0[1-9]|[1-2][0-9]|3[0-1])-(0[1-9]|1[0-2])-^[0-9]{4}$/', $fdag))

    {
         if(date(Y, time()) - date(Y,strtotime($fdag)) > 16){
            echo 'invalid date';
        }
        else
        {
            echo 'you have to be at least 16';
        }
    }
    }
    ?>

1 个答案:

答案 0 :(得分:1)

您可以使用filters

在php中验证电子邮件
$email = $_POST['email'];

if(isset($email)) {
     if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        echo 'invalid email';
     }
}