密码正则表达式必须至少包含8个字符、至少一个数字以及大小写字母和特殊字符

我想要一个正则表达式来检查:

密码至少包含八个字符,包括至少一个数字,并包括小写和大写字母以及特殊字符,例如#?!

它不能是您的旧密码或包含您的用户名、"password""websitename"

这是我的验证表达式,它适用于八个字符,包括一个大写字母、一个小写字母和一个数字或特殊字符。

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"

我怎么能写密码必须为八个字符,包括一个大写字母、一个特殊字符和字母数字字符呢?

1142025 次浏览

您可以将此正则表达式与多个前瞻断言(条件)一起使用:

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$

这个regex将执行这些规则:

  • 至少一个大写英文字母(?=.*?[A-Z])
  • 至少一个小写英文字母(?=.*?[a-z])
  • 至少一个数字,(?=.*?[0-9])
  • 至少有一个特殊字符(?=.*?[#?!@$%^&*-])
  • 最小8个长度.{8,}(带锚)

只是对@anubhava的回答的一个小改进:由于特殊字符仅限于键盘中的字符,因此对任何特殊字符都使用它:

^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$

这个regex将执行这些规则:

  • 至少一个大写英文字母
  • 至少一个小写英文字母
  • 至少一个数字
  • 至少一个特殊字符
  • 最小长度为8英寸

至少八个字符,至少一个字母和一个数字:

"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"

最少八个字符,至少一个字母,一个数字和一个特殊字符:

"^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$"

至少八个字符,至少一个大写字母,一个小写字母和一个数字:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"

最少八个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"

最少8个字符,最多10个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,10}$"

导入JavaScript文件jquery.validate.min.js

您可以使用此方法:

$.validator.addMethod("pwcheck", function (value) {return /[\@\#\$\%\^\&\*\(\)\_\+\!]/.test(value) && /[a-z]/.test(value) && /[0-9]/.test(value) && /[A-Z]/.test(value)});
  1. 至少一个大写英文字母
  2. 至少一个小写英文字母
  3. 至少一个数字
  4. 至少一个特殊字符

根据我的情况,我很难遵循最流行的答案。例如,我的验证在;[等字符上失败了。我对将我的特殊字符列入白名单不感兴趣,所以我转而利用[^\w\s]作为测试-简单地匹配非单词字符(包括数字)和非空格字符。总而言之,这是对我有效的方法…

  • 至少8个字符
  • 至少1数字字符
  • 至少1小写字母
  • 至少1大写字母
  • 至少1个特殊字符

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,}$/

jsfiddle链接-涵盖各种情况的简单演示

(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+-]).{6}

正则表达式没有AND运算符,因此很难编写与有效密码匹配的正则表达式,当有效性由某些东西和其他东西以及其他东西定义时…

但是,正则表达式确实有一个OR运算符,所以只需应用DeMorgan定理,并编写一个匹配无效密码的正则表达式:

任何少于8个字符的东西任何没有数字的东西任何没有大写的东西或任何没有小写的东西任何没有特殊字符的东西。

所以:

^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$

如果有匹配的,那么它是一个无效的密码。

根据你的需要,这种模式应该工作得很好。试试这个,

^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}

只需创建一个字符串变量,分配模式,并创建一个布尔方法,如果模式正确,则返回true,否则返回false。

样本:

String pattern = "^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}";String password_string = "Type the password here"
private boolean isValidPassword(String password_string) {return password_string.matches(Constants.passwordPattern);}

在Java /Android中,用至少一个数字、一个字母和一个特殊字符测试密码,模式如下:

"^(?=.*[A-Za-z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{8,}$"

试试这个:

  1. 最少6个字符
  2. 至少一个大写字符
  3. 至少一个小写字符
  4. 至少一个特殊字符

表情:

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

可选特殊字符:

  1. 至少一个特殊字符
  2. 至少有一个号码
  3. 特殊字符是可选的
  4. 最少6个字符,最多16个字符

表情:

"/^(?=.*\d)(?=.*[a-zA-Z]).{6,20}$/"

如果不需要最小和最大条件,则删除.{6, 16}

  • 6是最小字符限制
  • 20是最大字符限制
  • ?=表示匹配表达式

试试这个:

^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])[a-zA-Z0-9@#$%^&+=]*$

这个正则表达式非常适合我。

function myFunction() {var str = "c1TTTTaTTT@";var patt = new RegExp("^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])[a-zA-Z0-9@#$%^&+=]*$");var res = patt.test(str);console.log("Is regular matches:", res);}

我在前面的答案中找到了一个解决方案:

*最少8个字符至少1个大写字母、1个小写字母、1个数字和1个特殊字符:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}"*

…对我不起作用,但以下是一个简化的版本,效果很好(添加任何你喜欢的特殊字符,我在这里添加了#),并添加数字规则,就像你对字母所做的那样:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@$!%*?&]){8,}"

使用以下正则表达式满足以下条件:

条件:

  1. 最小1个大写字母。
  2. 最小1小写字母。
  3. 最小1个特殊字符。
  4. 最小1号。
  5. 最少8个字符。
  6. 最多30个字符。

正则表达式:

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

没有直接回答这个问题,但它真的必须是正则表达式吗?

我曾经做过很多Perl,并习惯于用正则表达式解决问题。然而,当它们变得更加复杂时,所有的预览和其他怪癖,你需要编写几十个单元测试来杀死所有这些小错误。

此外,正则表达式通常比命令式或函数式解决方案慢几倍。

例如,以下(不是很FP)Scala函数解决原始问题的速度比最流行答案的正则表达式快三倍。它的作用也很清楚,你根本不需要单元测试:

def validatePassword(password: String): Boolean = {if (password.length < 8)return false
var lower = falsevar upper = falsevar numbers = falsevar special = false
password.foreach { c =>if (c.isDigit)       numbers = trueelse if (c.isLower)  lower = trueelse if (c.isUpper)  upper = trueelse                 special = true}
lower && upper && numbers && special}

一个更“通用”的版本(?),不允许任何英文字母作为特殊字符

^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$

var pwdList = ['@@V4-\3Z`zTzM{>k','12qw!"QW12','123qweASD!"#','1qA!"#$%&','Günther32','123456789','qweASD123','qweqQWEQWEqw','12qwAS!'],re = /^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$/;  
pwdList.forEach(function (pw) {document.write('<span style="color:'+ (re.test(pw) ? 'green':'red') + '">' + pw + '</span><br/>');});

@ClasG已经建议

^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$

但它不接受_(下划线)作为特殊字符(例如Aa12345_)。

一个改进的是:

^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*([^\w\s]|[_]))\S{8,}$

模式以匹配至少1个大写字符、1位数字和任何特殊字符以及8到63之间的长度。

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d\\W]{8,63}$"

此模式用于JAVA编程。

我会回复彼得·莫滕森,但我没有足够的声誉。

他的表达式非常适合每个指定的最低要求。他不需要特殊字符的表达式的问题是它们也不允许特殊字符,所以它们也强制执行最大要求,我不相信OP要求了这一点。通常你想允许你的用户将他们的密码设置为他们想要的强密码;为什么要限制强密码?

所以,他的“至少八个字符,至少一个字母和一个数字”表达:

^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$

达到了最低要求,但剩余的字符可以只有是字母和数字。要允许(但不要求)特殊字符,您应该使用以下内容:

^(?=.*[A-Za-z])(?=.*\d).{8,}$允许任何字符

^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d$@$!%*#?&]{8,}$允许特定的特殊字符

同样,“至少八个字符,至少一个大写字母,一个小写字母和一个数字:”

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$

满足最低要求,但只有允许字母和数字。使用:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$允许任何字符

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}允许特定的特殊字符。

使用以下正则表达式满足以下条件:

Conditions: 1] Min 1 special character.2] Min 1 number.3] Min 8 characters or More

正则表达式:^(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,}$

可以在线测试:https://regex101.com

我们可以通过使用HTML5来做到这一点。

在模式属性中使用下面的代码,

pattern="(?=^.{8,}$)((?=.*\d)(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"

它将完美地工作。

您可以使用下面的正则表达式模式来检查密码是否符合您的期望。

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

希望下面的工作。我在Azure自定义策略中尝试过这个。

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@#$%^&amp;*\-_+=[\]{}|\\:',?/`~&quot;();!])([A-Za-z\d@#$%^&amp;*\-_+=[\]{}|\\:',?/`~&quot;();!]|\.(?!@)){6,16}$
(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$

链接在线检查https://regex101.com/r/mqGurh/1

我在这里发现了很多问题,所以我做了自己的。

这里是在所有它的荣耀,与测试:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*([^a-zA-Z\d\s])).{9,}$

https://regex101.com/r/DCRR65/4/tests

要注意的事情:

  1. 不使用\w,因为它包括_,我正在测试它。
  2. 我在匹配符号时遇到了很多麻烦,而没有匹配行尾。
  3. 没有特别指定符号,这也是因为不同的语言环境可能在他们的键盘上有不同的符号,他们可能想要使用。

我实际上只是在这里复制了第一个答案,并将其变成了一个更ux-方便正则表达式的答案,它需要一个上,一个下和至少8个字符,但接受“介于两者之间”的所有内容。

这是一个示例正则表达式,它需要

  1. 至少8个字符长度
  2. 至少一个小写字母
  3. 至少一个大写字母

重要:这个正则表达式也将除了所有其他字符,例如数字,特殊字符,如 $,#,! 等。-只要规则1.到3.匹配输入字符串

^(?=.*[a-z])(?=.*[A-Z]).{8,}$

注意正则表达式末尾的.。这将匹配几乎任何(和afaik任何可读的)字符

演示:

function password_check() {pass = document.getElementById("password").value;console.log(pass);regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;if (regex.exec(pass) == null) {alert('invalid password!')}else {console.log("valid");}}
<input type="text" id="password" value="Sample@1"><input type="button" id="submit" onclick="password_check()" value="submit">

用这个,

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

它将验证至少一个小写,一个大写,一个数字和 (!,@,#,$,%,?,=,*,&;)的特殊字符。

最小长度为8,最大长度为20

如何考虑以下regex解决方案:

^(?=.*[\w])(?=.*[\W])[\w\W]{8,}$

它验证了以下内容:

  1. 至少一个小写字母
  2. 至少有一个大写字母
  3. 至少一个数字
  4. 至少一个特殊字符
  5. 至少它应该有8个字符长。

检查它在以下链接工作https://regex101.com/r/qPmC06/4/

在2020年测试这个:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

验证你自己

const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;const str = `some12*Nuts`;let m;
if ((m = regex.exec(str)) !== null) {// The result can be accessed through the `m`-variable.m.forEach((match, groupIndex) => {console.log(`Found match, group ${groupIndex}: ${match}`);});}

这对我有效:

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@$!%*?&])([a-zA-Z0-9@$!%*?&]{8,})$
  • 至少8个字符长;
  • 一个小写、一个大写、一个数字和一个特殊字符;
  • 没有空格。
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*()_+,.\\\/;':"-]).{8,}$    
/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).*$/

这是在验证至少1大写1小写1数字时使用它的简单方法

这是我在快速验证中使用的示例

check('password').notEmpty().withMessage('Password cannot be null').bail().isLength({ min: 6 }).withMessage('Password must be at least 6 characters').bail().matches(/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).*$/).withMessage('Must have atleast 1 uppercase, 1 lowercase letter and 1 number'),
var strongRegex = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})");var mediumRegex = new RegExp("^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})");

最适合javascript

     var value=$("#password").val();$.validator.addMethod("strongePassword",function(value){return /^[A-Za-z0-9!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]*$/.test(value) && /[a-z]/.test(value) && /\d/.test(value) && /[A-Z]/.test(value)&& /[A-Z]/.test(value);`enter code here`},'Password must have minimum 9 characters and contain at least 1 UPPERCASE, 1 lower case, 1 number, 1 special character.');

对于标准密码要求,我发现这很有用:

  • 至少1个字母

  • 至少1位

  • 不包含空格

  • 可选特殊字符,例如. @$! %*#? &;^_-

  • 最少8个字符

    /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*#?&^_-]{8,}$/

您还可以将上限(例如{8,32})设置为最多32个字符。

如果您不喜欢使用正则表达式。所以这个模块很有帮助:https://www.npmjs.com/package/password-validator

var passwordValidator = require('password-validator'); 
// Create a schemavar schema = new passwordValidator(); 
// Add properties to itschema.is().min(8)                                    // Minimum length 8.is().max(100)                                  // Maximum length 100.has().uppercase()                              // Must have uppercase letters.has().lowercase()                              // Must have lowercase letters.has().digits(2)                                // Must have at least 2 digits.has().not().spaces()                           // Should not have spaces.is().not().oneOf(['Passw0rd', 'Password123']); // Blacklist these values 
// Validate against a password stringconsole.log(schema.validate('validPASS123'));// => trueconsole.log(schema.validate('invalidPASS'));// => false

对于需要以下内容的更严格的验证:

  1. 至少一个大写字符
  2. 至少一个小写字符
  3. 至少一个数字
  4. 至少一个符号/特殊字符 @$! %*#? &;^_-
  5. 最少8个字符/数字

正则表达式:

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

我希望它能帮助更严格的人。

保持简单愚蠢:

这应该为你做的把戏,总是。

正则表达式:^(.{0,7}|[^a-z]{1,}|[^A-Z]{1,}|[^\d]{1,}|[^\W]{1,})$|[\s]

如果您的密码与上面的正则表达式匹配,它是无效的。

如果没有匹配,您的密码是有效的,包含至少8个字符,一个大写字母,一个小写字母和一个符号或特殊字符。它也不包含空格、制表符或换行符。

正则表达式的分解

  1. .{0,7}-如果密码在0到7个字符之间匹配。
  2. [^a-z]{1,}-如果没有找到小写匹配
  3. [^A-Z]{1,}-如果没有找到大写匹配
  4. [^\d]{1,}-如果没有找到数字(在[0-9]之间),则匹配
  5. [\s]-如果找到空格、制表符或换行符,则匹配。

使用这种方法,在允许的符号方面没有限制或限制。如果您想限制允许的符号数量,只需将[^\W]更改为[^YourSymbols]

另一种选择是使用否定字符类在前瞻断言中使用对比度,可以选择匹配任何字符,除非在匹配应该匹配的字符之前列出。

^(?=[^A-Z\n]*[A-Z])(?=[^a-z\n]*[a-z])(?=[^0-9\n]*[0-9])(?=[^#?!@$%^&*\n-]*[#?!@$%^&*-]).{8,}$

regex演示

在部分情况下,模式匹配:

  • ^字符串的开始
  • (?=[^A-Z\n]*[A-Z])积极向前看,断言0+次除A-Z或换行符之外的任何字符。然后匹配一个字符A-Z
  • (?=[^a-z\n]*[a-z])对char a-z采用相同的方法
  • (?=[^0-9\n]*[0-9])数字0-9的方法相同
  • (?=[^#?!@$%^&*\n-]*[#?!@$%^&*-])对于你认为特殊的char,使用相同的方法
  • .{8,}匹配除换行符以外的任何字符8次或更多次
  • $字符串结束

备注

  • 点也可以匹配空格。如果您不想允许匹配空格,则可以将.{8,}更改为\S{8,}以匹配8个或更多非空格字符
  • 使用.\S可以匹配比前瞻断言中指定的更多的字符。如果您只想匹配断言中使用的字符,您可以使用字符类将.{8,}更改为仅匹配允许的字符[#?!@$%^&*A-Za-z0-9-]{8,}

const regex = /^(?=[^A-Z\n]*[A-Z])(?=[^a-z\n]*[a-z])(?=[^0-9\n]*[0-9])(?=[^#?!@$%^&*\n-]*[#?!@$%^&*-]).{8,}$/;["abcA1#!A","#!asdfSFD1;","# a f F1 ;","1111111111","aaaaaaaa","11111111","AAAAAAAA","########","aA1#"].forEach(s =>console.log(regex.test(s) ? `Match --> ${s}` : `No match --> ${s}`));

使用此regex满足所有条件:

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^A-Za-z0-9]).{8,}$

这个regex将执行这些规则:

  • 至少一个大写字母,(?=.*?[A-Z])
  • 至少一个小写,(?=.*?[a-z])
  • 至少一个数字,(?=.*?[0-9])
  • 至少一个特殊字符,即前3个条件中不包含的任何字符,(?=.*?[^A-Za-z0-9])
  • 最小长度为8.{8,}
"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[\\\\`~!@#$%^&/*()_+=[{}]\\[\\]|\\:;'\"<>.,?/-]).{8,}$";

 

✅以下4种正则表达式模式可以帮助您编写几乎任何密码验证

 

 

模式1:

 

密码必须包含一个从1到9的数字、一个小写字母、一个大写字母、一个特殊字符,没有空格,长度必须为8-16个字符。

/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W)(?!.* ).{8,16}$/

 

说明:

 

  • (?=.*[0-9])表示密码必须包含1到9的个位数。

 

  • (?=.*[a-z])表示密码必须包含一个小写字母。

 

  • (?=.*[A-Z])表示密码必须包含一个大写字母。

 

  • (?=.*\W)表示密码必须包含一个特殊字符。

 

  • .{8,16}表示密码长度必须为8-16个字符。我们必须在正则表达式的末尾,就在$符号之前使用它。

 

什么是#0和#1

 

^表示字符串的开头。$表示字符串的结尾。

如果我们不使用这些^$,则正则表达式将无法确定密码的最大长度。在上面的示例中,我们有一个条件,即密码不能超过16个字符,为了使该条件有效,我们使用了这些^$

 

删除最大长度限制:

 

  • 而不是.{8,16},如果我们使用.{8,},这意味着密码必须至少有8个字符长。因此,不会有任何检查密码最大长度的条件。

 

不要接受任何数字(数字):

 

  • 而不是(?=.*[0-9]),如果我们使用(?!.*[0-9]),这意味着密码不能包含1-9中的任何数字(与(?=.*[0-9])的区别是使用!而不是=

 

不要接受任何特殊字符:

 

  • 而不是(?=.*\W),如果我们使用(?!.*\W),这意味着密码不能包含任何特殊字符(与(?=.*\W)的区别是使用!而不是=

 

数字(数字)的替代语法:

 

  • 而不是(?=.*[0-9]),我们可以使用(?=.*\d)(?=.*\d)还意味着密码必须包含1到9的个位数。

 

 

模式2:

 

密码必须包含一个从1到9的数字,一个小写字母,一个大写字母,一个下划线,但没有其他特殊字符,没有空格,长度必须为8-16个字符。

/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*_)(?!.*\W)(?!.* ).{8,16}$/

 

与模式1的区别

 

  • 在这里,我们使用了不在Pattern 1上的(?=.*_)

 

  • (?=.*_)(?!.*\W)表示密码必须包含下划线,但不能包含任何其他特殊字符。

 

模式3:

 

密码必须包含1到9之间的一个数字、一个小写字母、一个大写字母、一个下划线、没有空格,长度必须为8-16个字符。使用下划线以外的任何其他特殊字符是可选的。

/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*_)(?!.* ).{8,16}$/

 

与模式2的区别

 

  • 在这里,我们没有使用(?!.*\W)上的Pattern 2

 

  • 但它仍然有(?=.*_)

 

  • 通过删除(?!.*\W),特殊字符已成为可选字符。现在,需要一个下划线,但任何其他特殊字符都可以使用或不使用,因为它是可选的。

 

模式4:

 

密码必须包含1到9之间的一个数字、一个小写字母、一个大写字母和一个下划线,长度必须为8-16个字符。使用任何其他特殊字符和空格是可选的。

/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}$/

 

与模式3的区别

 

  • 在这里,我们没有使用Pattern 3上的(?=.*_)(?!.* )

 

  • 通过删除(?=.*_),不再强制传递一个下划线。现在,传递特殊字符是可选的。

 

  • 通过删除(?!.* ),空间的使用也变得可选。

 

如何实现ts文件。

使用以下正则表达式满足以下条件:

条件:

最小1个大写字母。最小1小写字母。最小1个特殊字符。最小1号。最少8个字符。最多30个字符。正则表达式:

/^(? =. [a-z])(? =.[A-Z])(? =. \d)(?=。[#$@! %&;?])[A-Za-z\d#$@! %&;?]{8,30}$/