php正则表达式用户名最多包含6个字节,其中包含字母,数字,下划线,和. 如何写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php正则表达式用户名最多包含6个字节,其中包含字母,数字,下划线,和. 如何写相关的知识,希望对你有一定的参考价值。

用户名:/^[a-z\d_\u4e00-\u9fa5]3,6/i 邮箱:/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]2,4)+$/;
求采纳
参考技术A 邮箱 /\w+@\w+[\.\w+]1,3/ 用户名 /\w1,6/

正则表达式,用于包含至少8个字符和至少1个非字母数字字符的密码

我试图在PHP中进行检查,如果用户更改了他们的密码,他们的新密码必须是8个或更多字符,并且至少有1个非字母数字密码。我该怎么检查这个以及正则表达式是什么?

检查长度是容易的部分strlen >= 8。我的问题是正则表达式。即使经过多年的计算机科学研究,我对正则表达式也一无所知。

谢谢

答案

尝试这样的方法来检查它们是否使用了非字母数字字符:

if( !preg_match( '/[^A-Za-z0-9]+/', $password) || strlen( $password) < 8)
{
    echo "Invalid password!";
}

如果if不包含至少一个不在列表中的字符(字母数字字符),则true语句将评估为$password

另一答案

据我所知,你无法实现这一点,因为它是一个复合条件场景。

你需要做的是以三步的方式做到这一点:

$has8characters = (mb_strlen($_REQUEST['password']) >= 8);
$hasAlphaNum = preg_match('b[a-z0-9]+bi', $_REQUEST['password']);
$hasNonAlphaNum = preg_match('b[!@#$%?&*()_-+=]+bi', $_REQUEST['password']);

这没有经过测试,但你已经非常接近你希望通过这个...

祝好运

另一答案

如果使用strlen / mb_strlen检查字符串长度,则只需编写正则表达式即可匹配任何非字母数字字符。如果它匹配一个(或更多),你就是好的。例如:

$password = 'asdf123!';

if(mb_strlen($password) >= 8 and preg_match('/[^0-9A-Za-z]/', $password))
{
    // password is valid
}
另一答案

试试这个。

~^(.*[W]+.*){8,}$~
  • 。*查找任何字符0次或更多次
  • [ W] +匹配至少一个非单词字符
  • 仅当长度为8个或更多字符时,{8,}才匹配括号内的值
  • ^ $匹配字符串的开头和结尾
另一答案

这应该工作(未经测试)

if (preg_match('/^(?=.*[W])(?=[a-z0-9])[wW]{8,}$/i', '123abc!$'))
{
    //error
}

它确保密码长度为8个字符,并且至少包含一个特殊字符

另一答案

这解决了它。试试!

if(!preg_match('/^(?=.*d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,}$/', $pass)) {
  echo "Password does not meet the requirements! It must be alphanumeric and atleast 8 characters long";
}

以上是关于php正则表达式用户名最多包含6个字节,其中包含字母,数字,下划线,和. 如何写的主要内容,如果未能解决你的问题,请参考以下文章

用户名为4-16个字符(可包含中文,数字,字母和下划线)js正则表达式

如何使用正则表达式查询 pymongo 以获取仅包含数字的值

C++ 正则检测字串,提取数字以及字符

包含至少 8 个字符和至少 1 个非字母数字字符的密码的正则表达式

正则表达式,用于包含至少8个字符和至少1个非字母数字字符的密码

正则表达式判断是不是包含敏感字符