"的PHP正则表达式代码不匹配一次"

时间:2017-09-30 04:00:11

标签: javascript php

处理类似于this previous post的代码,但代码是密码($ email现在是$ password)。尝试进行验证检查以查看密码字段是否至少有一个数字,一个小写字母,一个大写字母和一个符号!@#$%^& *

PHP端验证使用正则表达式

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*])[a-zA-Z\d!@#$%^&*]{6,20}$/

工作正常。但是对于js验证,我将这用于"如果密码不包含其中一个"

if (preg_match('/([^a-z]{1})([^A-Z]{1})(^\d{1})([^!@#$%^&*]{1})+/', $password, $matches)) {
echo 'Password must contain _, _, _';

初学者和非常困惑。

1 个答案:

答案 0 :(得分:1)

为什么不在js中使用相同的正则表达式?

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*])[a-zA-Z\d!@#$%^&*]{6,20}$/

这也适用于js。如果只需要if password does not contain one of each使用否定作为

if (!preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*])[a-zA-Z\d!@#$%^&*]{6,20}$/', $password, $matches)) {
echo 'Password must contain _, _, _';