javascript - 用于在 PHP 和 Javascript 中进行简单密码验证的正则表达式

标签 javascript php jquery regex

我正在尝试使用 PHP 验证密码,我想对 Javascript 使用相同的正则表达式,在我的 PHP 中,当我尝试使用以下正则表达式时出现错误。 (Warning: filter_var(): Compilation failed: range out of order in character class at offset 14)

/^[a-zA-Z0-9_-\]\[\?\/<~#`!@\$%\^&\*\(\)\+=\}\|:\";\',>\{]{4,20}$/

if (!filter_var($password,FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z0-9_-\]\[\?\/<~#`!@\$%\^&\*\(\)\+=\}\|:\";\',>\{]{4,20}$/")))){
    $errors .= "Please enter a valid password.";
}

我希望密码为0-9 , a-zA-Z这些字符 ] [ ? / < ~ # ! @ $ % ^ & * ( ) + = } | : " ; ' , > { space加`

我想在前端和后端使用正则表达式。

最佳答案

看看这个“模块化”正则表达式

/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}/.test(password)

这个密码应该有:

  1. (?=.*\d) = 数字
  2. (?=.*[a-z]) = 小写字母
  3. (?=.*[A-Z]) =上限。字母
  4. .{8,} = 至少 8 个字符长

特殊字符部分: 取自上述答案之一,感谢@stribizhev

  1. (?=.*[?\/<~#`!@$%^&*()+=}|:\";\',>{ -]) = 特殊字符

所以你最终得到:

/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[?\/<~#`!@$%^&*()+=}|:\";\',>{ -])/.test(password)

强制最小长度 .{n,} n = lenght

/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[?\/<~#`!@$%^&*()+=}|:\";\',>{ -]).{8,}/.test(pass)

关于javascript - 用于在 PHP 和 Javascript 中进行简单密码验证的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32724170/

相关文章:

javascript - 显示和隐藏在 Jquery 中不起作用

javascript - react : event handling in ES8

javascript - 查找具有特定数据属性的所有元素(无论值如何)

javascript - 防止在隐藏和显示时推送元素 - jQuery

javascript:如果数组中的值在另一个数组中,则只删除一次该值

javascript - 当我勾选了两个复选框时,为什么标签不显示?

php - 我需要计算计数项目的百分比

php - CakePHP 3 错误 : SQLSTATE[42000]: Syntax error or access violation: 1064

php - 如何在 MS Azure 中调试 PHP

jquery - HTML - 拖放 - 如果没有放在特定位置,则将元素移回