이번에는 사용자가 설정한 비밀번호 강도를 확인하기 위한 정규식을 가져오겠습니다. 사용자가 설정한 비밀번호 강도에 대한 정규식을 확인하기 위한 Notes는 무엇인가요? 봐.
이 기사에서는 비밀번호 강도에 대한 두 가지 정규식 구성표를 제공합니다. 하나는 간단하고 다른 하나는 더 복잡하고 안전합니다. 그리고 두 솔루션의 분석 및 테스트 절차가 각각 제공됩니다. 일반적으로 프로젝트의 실제 요구 사항에 따라 자신만의 비밀번호 규칙을 정의할 수 있습니다.
머리말
사용자가 등록할 때 비밀번호 규칙성 확인이 사용됩니다. 올바른 정규 표현식을 작성하려면 먼저 표현식 규칙을 정의해야 합니다.
옵션 1(단순)
비밀번호 확인이 다음과 같이 정의되어 있다고 가정합니다.
최소 6자리, 최대 16자리 {6,16}
에는 소문자 [a-z] 및 대문자 [A-Z]
는 숫자 [0-9]를 포함할 수 있습니다. 리터럴 정의 다음과 같습니다.
var pattern = /^[\w_-]{6,16}$/;
시나리오 1 분석
Literal/ /
정규 표현식의 리터럴은 슬래시(/) 쌍 사이에 포함된 문자로 정의됩니다. 예: var pattern = /s$/;
문자를 대괄호 안에 넣어 문자 클래스를 구성하세요. 문자 클래스는 포함된 모든 문자와 일치할 수 있습니다. 따라서 정규식 /[abc]/는 문자 "a", "b" 또는 "c"와 일치합니다.
문자 클래스는 하이픈을 사용하여
문자 범위를 나타낼 수 있습니다. 라틴 소문자를 일치시키려면 /[a-z]/ 를 사용하세요.
Character 클래스 wCharacter 클래스 w는 [a-zA-Z0-9]에 해당하는 ASCII 문자로 구성된 모든 단어와 일치합니다. [w_-]는 라틴어 대문자 및 소문자, 숫자, 밑줄 및 빼기 기호를 일치시키는 것을 의미합니다.
Repeat {}
정규 표현식에서 { }를 사용하여 요소가 반복되는 횟수를 나타냅니다.
{n,m}은 이전 항목과 최소 n번 일치하지만 m번 이하입니다.
{n,}는 이전 항목과 n번 이상 일치합니다.
{n}은 이전 항목과 일치합니다. item 항목 n번
[w_-]{6,16}은 라틴어 대문자와 소문자, 숫자, 밑줄, 빼기 기호가 최소 6회에서 최대 16회 나타나는 것을 의미합니다.
/^w/는 대문자나 소문자 또는 숫자로 시작하는 문자열과 일치합니다.
옵션 1 테스트
테스트 결과는 다음과 같습니다.
var pattern = /^[\w_-]{6,16}$/; pattern.test('123456') = true; pattern.test('-ifat33') = true; pattern.test('42du') = false; pattern.test('du42du42du42du421') = false; pattern.test('42du42@') = false;
소스 코드 보기테스트 결과에 따르면 Scheme 1은 비밀번호를 일시적으로 제한할 뿐 비밀번호의 강도를 보장할 수 없음을 알 수 있습니다. 비밀번호와 계정의 보안.
옵션 2(보안)
비밀번호 확인이 다음과 같이 정의되어 있다고 가정합니다.
최소 6자리, 최대 16자리 {6,16}
1을 포함해야 합니다. number
소문자 2개 포함
대문자 2개 포함
특수문자 1개 포함
var pattern = /^.*(?=.{6,16})(?=.*\d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[!@#$%^&*?\(\)]).*$/;
方案2分析
字符类 .
字符类 . 表示除换行符和其他Unicode行终止符之外的任意字符。
正向先行断言 (?= )
在符号“(?=” 和 “)” 之间加入一个表达式,它就是一个先行断言,用以说明圆括号内的表达式必须正确匹配。比如: /Java(?=\:)/ 只能匹配Java且后面有冒号的。
(?=.*[!@#$%^&*?\(\)])
该先行断言表示,必须包括一个特殊字符。上述表达式中的10个特殊字符为键盘1,2...0的上档键字符,也可以添加别的特殊字符。注意:如果添加字符是正则表达式中具有特殊含义的,需要在符号前加反斜线(\)转义。
方案2测试
给出测试结果如下:
var pattern = /^.*(?=.{6,16})(?=.*\d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[!@#$%^&*?\(\)]).*$/; pattern.test('du42DU!') = true; pattern.test('duDUd!') = false; pattern.test('42dud!') = false; pattern.test('42DUD!') = false; pattern.test('42duDU') = false; pattern.test('42duU(') = false; pattern.test('42dUU!') = false;
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
위 내용은 사용자가 설정한 비밀번호 강도 정규식 확인의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!