java正则表达式 密码强度_密码验证,密码强度正则表达式

当用户登录网站时,一般要求用户提供登录该网站的用户名称和密码。从某种意义上说,密码的复杂程度越高,用户的信息安全性越高。因此,很多网站在注册用户信息或修改用户密码时,往往会提供一个密码强度的说明,从而提醒用户使用高强度的密码。

目前来说,密码字符可以分为3种:数字、字母和特殊字符(即除数字、字母之外的字符)。用户密码包含上述3种字符种的种类越多,密码的安全性越高。用户密码只含其中一种的安全性是最低的,如123455、abcdef等。其次是含上述2种字符的密码,如123abc、123!@#等。密码强度最好的是:包含上述3种字符,如123QAZ!@#。

注意:本小节中的特殊字符包括`、-、=、\、[、]、;、'、,、.、/、~、!、@、#、$、%、^、&、*、(、)、_、+、|、?、>、

1.只包含数字的密码验证

如果密码中只包含数字,那么该密码是非常简单。当然,它的安全性也相对较差。以下正则表达式能够验证只包含数字的密码。

\d+                                                                                 (68)

该类型密码的安全性随着密码的长度增加而增加。密码长度越大,它的安全性越高。以下正则表达式能够验证长度至少为6的、只包含数字的密码。

\d{6,}                                                                     (69)

2.只包含字母的密码验证

如果密码中只包含字母,那么该密码是非常简单。当然,它的安全性也相对较差。以下正则表达式能够验证只包含字母的密码。

[a-zA-Z]+                                                                      (70)

该类型密码的安全性随着密码的长度增加而增加。密码长度越大,它的安全性越高。以下正则表达式能够验证长度至少为6的、只包含字母的密码。

[a-zA-Z]{6,}                                                                    (71)

3.只包含特殊字符的密码验证

如果密码中只包含特殊字符,那么该密码是非常简单。当然,它的安全性也相对较差。以下正则表达式能够验证只包含特殊字符的密码。

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

正则表达式(72)解释:

q      \\表示字符\。

q      \[表示字符[。

q      \]表示字符]。

q      其他的每一个字符就表示字符本身。

该类型密码的安全性随着密码的长度增加而增加。密码长度越大,它的安全性越高。以下正则表达式能够验证长度至少为6的、只包含特殊字符的密码。

[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]{6,}                              (73)

使用工具Regex Tester测试正则表达式(73),结果如图4.34所示。

4.4.5.jpg

4.当且仅当含数字和字母的密码验证

如果密码当且仅当包含数字和字母,那么该密码的强度是中等强度。当然,它的安全性一般。以下正则表达式能够验证当且仅当包含数字和字母的密码。

[\da-zA-Z]*\d+[a-zA-Z]+[\da-zA-Z]*                                      (74)

正则表达式(74)解释:

\d匹配长度至少1的、由数字组成的字符串。

[a-zA-Z]+匹配长度至少1的、由字母组成的字符串。

[\da-zA-Z]*匹配空字符串,或者长度至少1的、由数字或字母组成的字符串。

\d+[a-zA-Z]+保证密码既包含了数字又包含特殊字符。

使用工具Regex Tester测试正则表达式(74),结果如图所示。

4.4.5.1.jpg

5.当且仅当含数字和特殊字符的密码验证

如果密码当且仅当包含数字和特殊字符,那么该密码的强度是中等强度。当然,它的安全性一般。以下正则表达式能够验证当且仅当包含数字和特殊字符的密码。

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

正则表达式(75)解释:

字符类[-\d`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+:\d表示任意数字;\\表示字符\;\[表示字符[;\]表示字符];其他的每一个字符就表示字符本身。该字符类可以匹配数字或者特殊字符。

\d+匹配最小长度为1的、由数字组成的字符串。

[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+匹配最小长度为1的、由特殊字符组成的字符串。

\d+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+保证密码既包含了数字又包含特殊字符。

使用工具Regex Tester测试正则表达式(75),结果如图所示。

4.4.5.2.jpg

6.当且仅当包含字母和特殊字符的密码验证

如果密码当且仅当包含字母和特殊字符,那么该密码的强度是中等强度。当然,它的安全性一般。以下正则表达式能够验证只包含字母和特殊字符的密码。

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

正则表达式(76)解释:

字符类[-a-zA-Z`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+:a-z表示小写字母;A-Z表示大写字母;\\表示字符\;\[表示字符[;\]表示字符];其他的每一个字符就表示字符本身。该字符类可以匹配字母或者特殊字符。

[a-zA-Z]+匹配最小长度为1的、由字母组成的字符串。

[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+匹配最小长度为1的、由特殊字符组成的字符串。

[a-zA-Z]+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+保证密码既包含了字母又包含特殊字符。

使用工具Regex Tester测试正则表达式(76),结果如图所示。

4.4.5.3.jpg

7.当且仅当包含数字、字母和特殊字符的密码验证

如果密码当且仅当包含数字、字母和特殊字符,那么该密码的强度是高强度。当然,它的安全性相对比较好。以下正则表达式能够验证当且仅当包含数字、字母和特殊字符的密码。

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

(

(\d+[a-zA-Z]+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+) #数字开头

|(\d+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+[a-zA-Z]+) #数字开头

|([a-zA-Z]+\d+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+) #字母开头

|([a-zA-Z]+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+\d+) #字母开头

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

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

)

[-\da-zA-Z`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*                         (77)

正则表达式(77)解释:

\d+匹配最小长度为1的、由数字组成的字符串。

[a-zA-Z]+匹配最小长度为1的、由字母组成的字符串。

[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+匹配最小长度为1的、由特殊字符组成的字符串。

\d+[a-zA-Z]+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+匹配型如“数字+字母+特殊字符”类型的字符串。

(\d+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+[a-zA-Z]+)匹配型如“数字+特殊字符+字母”类型的字符串。

[a-zA-Z]+\d+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+匹配型如“字母+数字+特殊字符”类型的字符串。

[a-zA-Z]+[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+\d+匹配型如“字母+特殊字符+数字”类型的字符串。

[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+\d+[a-zA-Z]+匹配型如“特殊字符+数字+字母”类型的字符串。

[-`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]+[a-zA-Z]+\d+匹配型如“特殊字符+字母+数字”类型的字符串。

字符类[-\da-zA-Z`=\\\[\];',./~!@#$%^&*()_+|{}:"<>?]*:\d表示任意数字;a-z表示小写字母;A-Z表示大写字母;\\表示字符\;\[表示字符[;\]表示字符];其他的每一个字符就表示字符本身。该字符类可以匹配数字、字母或者特殊字符。

使用工具Regex Tester测试正则表达式(77),结果如图所示。

4.4.5.4.jpg

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java正则表达式是一种用于匹配、查找和替换文本的强大工具。它可以用于验证输入是否符合特定的格式、从文本中提取信息、以及将文本中的某些内容替换成其他内容。 下面是一些示例代码,说明如何使用Java正则表达式进行匹配、替换和查找操作: 1. 匹配操作: ```java String input = "This is a test string."; String pattern = "test"; // 创建 Pattern 对象 Pattern p = Pattern.compile(pattern); // 执行匹配操作 Matcher m = p.matcher(input); if (m.find()) { System.out.println("Found match at index " + m.start() + " to " + m.end()); } else { System.out.println("No match found."); } ``` 这段代码首先定义了一个输入字符串和一个正则表达式模式,然后创建了一个 Pattern 对象,并使用该对象对输入字符串进行匹配操作。如果找到了匹配项,则输出其开始和结束位置;否则,输出未找到匹配项的提示信息。 2. 替换操作: ```java String input = "This is a test string."; String pattern = "test"; String replacement = "example"; // 执行替换操作 String output = input.replaceAll(pattern, replacement); System.out.println("Output string: " + output); ``` 这段代码使用了 String 类的 replaceAll() 方法,将输入字符串中所有匹配正则表达式模式的部分替换成指定的字符串。替换后的字符串将被输出到控制台。 3. 查找操作: ```java String input = "This is a test string."; String pattern = "\\w+"; // 创建 Pattern 对象 Pattern p = Pattern.compile(pattern); // 执行查找操作 Matcher m = p.matcher(input); while (m.find()) { System.out.println("Found match: " + m.group()); } ``` 这段代码使用了一个正则表达式模式,该模式匹配一个或多个字母、数字或下划线字符。然后,它创建了一个 Pattern 对象,并使用该对象对输入字符串进行查找操作。如果找到了匹配项,则输出其内容;否则,继续查找下一个匹配项。这里使用了 Matcher 类的 find() 方法来查找所有匹配项。 以上是Java正则表达式的一些基本用法,可以根据具体需求进行调整和扩展。通过学习Java正则表达式,我们可以更轻松地处理文本数据,并快速准确地完成各种文本处理任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值