Php 用于密码6-12字符的正则表达式一位数字,一个大写字母

Php 用于密码6-12字符的正则表达式一位数字,一个大写字母,php,regex,Php,Regex,我正在尝试使用以下常规exp检查用户密码: $regex='/^(?=.*[A-Za-z0-9@])(?=.*\d)[a-zA-Z0-9@]{6,12}$/'; if(isset($_POST['password']) && strlen($_POST['password'])>=6 && strlen($_POST['password']<=12) && preg_match($regex, $_POST['password'])

我正在尝试使用以下常规exp检查用户密码:

$regex='/^(?=.*[A-Za-z0-9@])(?=.*\d)[a-zA-Z0-9@]{6,12}$/';

if(isset($_POST['password']) && strlen($_POST['password'])>=6 && 
strlen($_POST['password']<=12) && preg_match($regex, $_POST['password'])){

echo 'ok';
}else{echo 'invalid password';}
$regex='/^(?=.[A-Za-z0-9@])(?=.*\d[A-Za-z0-9@]{6,12}$/';
如果(isset($_POST['password'])和strlen($_POST['password'])>=6&&
strlen($\u POST['password']试试这个:-

最少6个字符

至少1个大写字符

至少一位数字

表达方式:

"/^(?=.*?[0-9])(?=.*[A-Z]).{6,12}$/"
试试这个:-

最少6个字符

至少1个大写字符

至少一位数字

表达方式:

"/^(?=.*?[0-9])(?=.*[A-Z]).{6,12}$/"

你的角色类太宽。你需要单独检查

^(?=.*[A-Z])(?=.*\d).{6,12}$
(?=.[A-Z])
至少是一个大写字符。
(?=.*\d)
至少是一个数字
{6,12}
是6-12个字符(不是新行)
^$
是确保完整字符串匹配的锚定


在正则表达式中,您的字符类
[A-Za-z0-9@]
允许使用大写、小写、数字或
@
(这不能确保您有1个大写字符)。如果使用此正则表达式,您也不需要
strlen
函数。

您的字符类太宽。您需要单独检查

^(?=.*[A-Z])(?=.*\d).{6,12}$
(?=.[A-Z])
至少是一个大写字符。
(?=.*\d)
至少是一个数字
{6,12}
是6-12个字符(不是新行)
^$
是确保完整字符串匹配的锚定


在正则表达式中,字符类
[A-Za-z0-9@]
允许使用大写字符、小写字符、数字或
@
(这并不确保您有一个大写字符)。如果使用此正则表达式,您也不需要strlen函数。

这不适用于干净的正则表达式。它必须非常强大。您能澄清您的问题吗?它对
12Hello
Hello12
都有
ok
的响应,除非您正在做的不是什么或另外的事情您已发布。顺便说一句,请在发布之前尝试格式化您的代码。您发布的代码很难阅读,这会导致错误。关于这个问题,有一些很好的例子-请在2017年停止这样做-允许任意输入,然后散列到所需的密码长度。只需使用一个库,告诉您的用户使用密码是多么容易确认他们的密码(理想情况下,“此密码可在2秒内破解,请选择更好的密码”)然后接受他们挑选的足够强大的任何东西。这里根本没有理由推出你自己的代码,我们已经为你找到了答案,用你最喜欢的语言,使用它。这不适合一个干净的正则表达式。它必须非常暴力。你能澄清你的问题吗?它呼应
ok
对于
12Hello
Hello12
,除非您正在做的事情与您发布的内容或内容不同。顺便说一句,请在发布之前尝试格式化您的代码。您发布的代码很难阅读,这会导致错误。在这个问题上有一些很好的例子-请在2017年停止这样做-允许arbi输入密码,然后散列到所需的密码长度。只需使用一个库,告诉用户破解密码有多容易(理想情况下,“此密码可在2秒钟内破解,请选择更好的密码”)然后接受他们挑选的足够强大的任何东西。实际上没有理由在这里滚动您自己的代码,我们已经为您解决了这个问题,用您最喜欢的语言,使用它。编辑后,这个答案现在与我的答案相同,尽管缺少描述。对不起,克里斯,当我发布我的答案时……真的我没有检查您的答案r以上。此处的
是多余的。
*
无论如何是0或更多。编辑后,此答案现在与我的答案相同,尽管缺少描述。对不起,克里斯,当我发布我的答案时。。我确实没有检查您的答案。此处的
是多余的。
*
无论如何是0或更多。