首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更有效的密码检查器

问更有效的密码检查器
EN

Stack Overflow用户
提问于 2018-12-13 23:06:01
回答 1查看 53关注 0票数 0

分配给我的程序有以下规则:

规则:

  1. 字符数必须在6,10中。

2.在'a','z‘范围内必须有>= 2字符

3.在'A','Z‘范围内必须有>= 2字符

  1. 必须在'0','9‘范围内有>= 2字符

例如,pw1(“and 09-+”)应该返回true,而pw1(“aabC09 09-+”)应该返回false。

我已经附加了我的代码,但是我可以使用更高效/更干净的代码吗?

代码语言:javascript
复制
import java.util.*;

public class PassChecker2 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

// Prompt User to Enter String
System.out.print("Enter Password: ");

// Grab User Generated String
String pw = input.next();

// Pass String to be Checked
boolean valid_pw = checkPW(pw);

if(valid_pw)
  System.out.println(pw + " is a valid password!");
else
  System.out.println(pw + " is not a valid password!");

}

public static boolean checkPW(String pw)
{

int pwLowerCase = 0,
     pwUpperCase = 0,
     pwNumber = 0;

// Return False if PW is too Small / Large
if(!(pw.length() >= 2 && pw.length() <= 10))
    return false;

for(int position = 0; position < pw.length(); ++position)
{

    char character = pw.charAt(position);

    if(character >= 'a' && character <= 'z')
        ++pwLowerCase;
    else if(character >= 'A' && character <= 'Z')
        ++pwUpperCase;
    else if(character >= '1' && character <= '9')
        ++pwNumber;

}

return (pwLowerCase >= 2 && pwUpperCase >= 2 && pwNumber >= 2);

}

}

EN

回答 1

Stack Overflow用户

发布于 2018-12-13 23:48:19

IMHO,我们可以使用regex表达式进行密码检查,而不是编写java代码:

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

请检查表达式是否满足了您的要求:

Ruby正则表达式编辑器

然后,您可以在Matcher包中使用java.util.regex和Pattern来使用regex表达式。

regex的优势:

它可以在不同的语言中重用。例如,对于网站开发,我们可以同时使用客户端检查和服务器端检查,我们不为javascript和java-后端编写检查器,但是在双方都使用regex表达式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53771336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档