需要为至少1个特殊字符添加正则表达式(php)

时间:2016-02-18 04:52:51

标签: php regex

$uppercase = preg_match('@[A-Z]@', $motpass);
$lowercase = preg_match('@[a-z]@', $motpass);
$number    = preg_match('@[0-9]@', $motpass);
$special   = preg_match('@[@#$%^&+=]@', $motpass);  <---( PROBLEM HERE )

if (!$uppercase || !$lowercase || !$number || !$special || strlen($motpass) < 8)


{

    $motpass_error='NO GOOD';
    $error=true;
}
    else
{
    $motpass = $_POST['motpass'];
}

我正在寻找正则表达式(所有特价Chararcter或大多数)

提前致谢!

3 个答案:

答案 0 :(得分:0)

您可以尝试以下代码。

$uppercase = preg_match('@[A-Z]@', $motpass);
$lowercase = preg_match('@[a-z]@', $motpass);
$number    = preg_match('@[0-9]@', $motpass);
$special   = preg_match('/[^a-zA-Z\d]/', $string);

OR

$uppercase = preg_match('@[A-Z]@', $motpass);
$lowercase = preg_match('@[a-z]@', $motpass);
$number    = preg_match('@[0-9]@', $motpass);
$special   = preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$%^&]).*$/');

if (!$uppercase || !$lowercase || !$number || !$special || strlen($motpass) < 8)


{

    $motpass_error='NO GOOD';
    $error=true;
}
    else
{
    $motpass = $_POST['motpass'];
}

答案 1 :(得分:0)

试试这个

$special   = preg_match('/[^a-zA-Z\d]/', $motopass);

答案 2 :(得分:0)

'\ w'匹配单词(字母或数字)字符,其中'\ W'与非单词(特殊字符)字符匹配。

因此使用非单词字符变得简单。 试试下面的正则表达式:

$special   = preg_match('/\W+/', $string);
表达式中的

'+'表示一个或多个单词字符。