繁体   English   中英

PHP Regex问题(用户名,生日,电子邮件地址)

[英]PHP Regex Problem (username, birthdate, email address)

下面的正则表达式似乎不起作用。 是因为!preg_match吗?
用户名

if (!preg_match("/^[A-Za-z](?=[A-Za-z0-9_.]{3,31}$)[a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*$/",$_POST['username'])) {
    $hasErr = true;
    $return['username'] = 'Please enter a valid username. Use 4 to 32 characters '
                        . 'and start with a letter. You may use letters, numbers, '
                        . 'underscores, and one dot (.).';
}

生日

if (!preg_match("'\b(0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2}\b'", $_POST['birthdate'])) {
    $hasErr = true;
    $return['birthdate'] = 'Please enter your birthdate in a valid format. mm/dd/yyy';
}

电子邮件地址

if (!preg_match("'\b[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}\b'",$_POST['email'])) {
    $hasErr = true;
    $return['email'] = 'Please enter a valid email address.';
}

这就是我要做的

<?php

// remove whitespaces
array_walk($_POST, 'trim');

function validate() {
    $return = array();
    if (!preg_match('/^[A-Za-z](?=[A-Za-z0-9_.]{3,31}$)[a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*$/',$_POST['username'])) {
        $return['username'] = 'Please enter a valid username. Use 4 to 32 characters '
                            . 'and start with a letter. You may use letters, numbers, '
                            . 'underscores, and one dot (.).';
    }

    if (!preg_match('/^(0?[1-9]|1[012])[- .\/](0?[1-9]|[12][0-9]|3[01])[- .\/](19|20)?[0-9]{2}$/', $_POST['birthdate'])) {
        $return['birthdate'] = 'Please enter your birthdate in a valid format. mm/dd/yyy';
    }

    // email regexes are pretty problematic
    if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
        $return['email'] = 'Please enter a valid email address.';
    }

    return (empty($return)) ? true : $return;
}

echo '<pre>';
var_dump(validate());
echo '</pre>';

?>

注意:我没有检查您的用户名正则表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM