這一個會很快,我必須做一個程序,檢查密碼是否有效。它必須至少8個字符,有一個較低的字符,一個大寫的字符,並且至少有一個特殊字符是有效的。否則,密碼將無效。一切似乎都沒有問題,但即使是這樣,它似乎也沒有檢查出有效。我覺得它與角色位置或什麼有關,但我不能確定它到底是什麼。 編輯:更新,包括正則表達式 的代碼如下:密碼檢查錯誤
/* Class: CS1301
* Section: 9:30
* Term: Fall 2015
* Name: Matthew Woolridge
* Instructor: Mr. Robert Thorsen
* Assignment: Assignment 6
* Program: 3
* ProgramName: PasswordTest
* Purpose: The program prompts the user to input a password and says if it is valid or invalid
* Operation: The information is statically instantiated in the code and
* the data is output to the screen.
* Input(s): The input the password
* Output(s): The output will be valid or invalid
* Methodology: The program will use loops to determine if valid or invalid
*
*/
import java.lang.*;
import java.util.*;
public class PasswordTest
{
public static void main (String[] args)
{
/******************************************************************************
* Declarations Section *
******************************************************************************/
/****************************CONSTANTS********************************/
String pass;
int i;
boolean valid=false;
Scanner scan = new Scanner(System.in); //Initializes the scanner
//"^(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[*/&%^*$#@!~+_]).+$" //RegexChecker
/******************************************************************************
* Inputs Section *
******************************************************************************/
System.out.print("Please input a password: ");
pass = scan.nextLine();
/****************************variables********************************/
//*********************Using while loop so in processing*********************//
/******************************************************************************
* Processing Section *
******************************************************************************/
for (i = 0; i<pass.length(); i++)
{
if(pass.matches("^(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[*/&%^*$#@!~+_]).+$")){
valid=true;
}
}
if (valid==true){
System.out.print("Entered Password: " + pass);
System.out.print("\nThe pass is: Valid!");
}
else{
System.out.print("Entered Password: " + pass);
System.out.print("\nThe pass is: Invalid!");
}
/******************************************************************************
* Outputs Section *
******************************************************************************/
//*********************The outputs are in the processing*****************//
} //Ends string
} //Ends program
正則表達式有時會起作用,但它似乎只是希望使用特定的密碼而不是任何順序,只要滿足這些要求即可。例如,G $ hthyuj的作品,但如果我鍵入fa#4F它返回無效。請幫忙@ Nishant123。 – snipem1438
上面提到的密碼有效的參數不包含數字。所以我做了一個適合你的要求的正則表達式。我編輯了我的答案並更改了正則表達式。現在它應該需要在一個數字是有效的 – Nishant123
哦,我不能相信我沒有注意到我自己或我會包括它。非常感謝你! @ Nichant123它就像一個魅力! – snipem1438