최근에 프로젝트를 진행하다가 숫자와 문자로 구성되어야 하고 숫자와 문자가 모두 포함되어야 하며 길이가 8~16자리 사이여야 한다는 요구 사항을 만났습니다. 구현 코드를 공유해드리겠습니다. 살펴보시기 바랍니다
사용자 등록 기능의 비밀번호는 다음과 같은 요구 사항을 갖습니다. 숫자와 문자로 구성되어야 하며, 숫자와 문자가 모두 포함되어야 하며, 길이는 반드시 8~16자리 숫자여야 합니다.
요구 사항을 분석하는 방법은 무엇입니까? 나뉘다! 이것이 소프트웨어 디자인의 일반적인 아이디어입니다. 따라서 분할 요구 사항은 다음과 같습니다.
1, 모든 숫자가 아님
2, 모든 문자가 아님
3, 숫자 또는 문자여야 함
위의 세 가지 요구 사항을 동시에 충족할 수 있는 한,
^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$
별도로 코멘트를 하자면:
^은 줄의 시작 위치와 일치합니다.
(?![0-9]+$)는 해당 위치 뒤에 숫자가 오지 않을 것이라고 예측합니다
(?! [a-zA-Z]+ $) 해당 위치 뒤에 문자가 오지 않을 것으로 예측합니다.
[0-9A-Za-z] {8,16}은 8~16개의 숫자 또는 문자로 구성됩니다.
$ 끝 부분과 일치합니다. 줄 위치
참고: (?! xxxx)는 정규 표현식의 너비가 0인 음의 어설션 형식으로, 이 위치 뒤의 문자가 xxxx가 아님을 나타냅니다.
테스트 예시는 다음과 같습니다.
public class Test { public static void main(String[] args) throws Exception { String regex = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$"; String value = "aaa"; // 长度不够 System.out.println(value.matches(regex)); value = "1111aaaa1111aaaaa"; // 太长 System.out.println(value.matches(regex)); value = "111111111"; // 纯数字 System.out.println(value.matches(regex)); value = "aaaaaaaaa"; // 纯字母 System.out.println(value.matches(regex)); value = "####@@@@#"; // 特殊字符 System.out.println(value.matches(regex)); value = "1111aaaa"; // 数字字母组合 System.out.println(value.matches(regex)); value = "aaaa1111"; // 数字字母组合 System.out.println(value.matches(regex)); value = "aa1111aa"; // 数字字母组合 System.out.println(value.matches(regex)); value = "11aaaa11"; // 数字字母组合 System.out.println(value.matches(regex)); value = "aa11aa11"; // 数字字母组合 System.out.println(value.matches(regex)); } }
위는 숫자와 알파벳 비밀번호를 매칭하기 위해 에디터가 소개하는 정규식입니다. 궁금한 점이 있으시면 남겨주세요. 메시지를 보내주시면 편집자가 모든 사람에게 즉시 답변해 드리겠습니다.
위 내용은 숫자 및 알파벳 비밀번호 일치를 위한 정규식에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!