암호에 대한 정규식은 8 자 이상, 하나 이상의 숫자 및 소문자와 특수 문자를 모두 포함해야합니다.
정규식으로 확인하고 싶습니다.
비밀번호는 하나 이상의 숫자를 포함하여 8 자 이상이며 소문자와 대문자 및 특수 문자 (예 : #
, ?
)를 포함 !
합니다.
이전 비밀번호이거나 사용자 이름 "password"
, 또는"websitename"
그리고 여기 대문자 1 개, 소문자 1 개, 숫자 또는 특수 문자를 포함하여 8 개의 문자에 대한 유효성 검증 표현식이 있습니다.
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
암호로 쓰려면 대문자, 특수 문자 및 영숫자를 포함하여 8 자 여야 합니까?
최소 8 자, 하나 이상의 문자와 하나의 숫자 :
"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"
최소 8 자, 하나 이상의 문자, 하나의 숫자 및 하나의 특수 문자 :
"^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$"
최소 8 자, 하나 이상의 대문자, 하나의 소문자 및 하나의 숫자 :
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"
최소 8 자, 하나 이상의 대문자, 하나의 소문자, 하나의 숫자 및 하나의 특수 문자 :
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"
최소 8 자 및 최대 10 자, 하나 이상의 대문자, 하나의 소문자, 하나의 숫자 및 하나의 특수 문자 :
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,10}$"
이 정규식을 여러 개의 미리보기 어설 션 (조건) 과 함께 사용할 수 있습니다 .
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$
이 정규 표현식은 다음 규칙을 시행합니다.
- 적어도 하나의 대문자 영어 편지 ,
(?=.*?[A-Z])
- 영문 소문자 1 자 이상
(?=.*?[a-z])
- 적어도 하나의 숫자
(?=.*?[0-9])
- 하나 이상의 특수 문자
(?=.*?[#?!@$%^&*-])
- 최소 길이 8
.{8,}
(앵커 포함)
정규 표현식에는 AND 연산자가 없으므로 유효성이 무언가 다른 것으로 정의되고 다른 것에 의해 정의 될 때 유효한 암호와 일치하는 정규 표현식을 작성하는 것은 매우 어렵습니다 ...
그러나 정규 표현식에는 OR 연산자가 있으므로 DeMorgan 정리를 적용하고 유효하지 않은 비밀번호와 일치하는 정규식을 작성하십시오.
8 자 미만으로 무엇이든 또는 어떤 번호가 무엇이든 또는 어떤 대문자 무엇이든 또는 어떤 소문자 또는 아무것도 또는 특수 문자 아무것도.
그래서:
^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$
일치하는 것이 있으면 잘못된 암호입니다.
@anubhava의 대답에 대한 작은 개선 사항 : 특수 문자는 키보드의 문자로 제한되므로 특수 문자에 이것을 사용하십시오.
^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
이 정규 표현식은 다음 규칙을 시행합니다.
- 하나 이상의 대문자 영어
- 하나 이상의 소문자 영문
- 하나 이상의 숫자
- 하나 이상의 특수 문자
- 최소 길이 8
내 상황에서 가장 인기있는 답변을 따르는 데 어려움이있었습니다. 예를 들어, 내 검증은 다음과 같은 문자로 실패했다 ;
나 [
. 나는 특수 문자를 화이트리스트에 [^\w\s]
올리는 데 관심이 없었기 때문에 대신 단어가 아닌 문자 (숫자를 포함)와 공백이 아닌 문자를 테스트로 사용했습니다. 요약하면 다음과 같습니다.
- 최소한
8
문자 1
숫자 이상- 적어도
1
소문자 - 적어도
1
대문자 - 적어도
1
특별한 성격
/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,}$/
JSFiddle Link- 다양한 사례를 다루는 간단한 데모
JavaScript 파일을 가져옵니다 jquery.validate.min.js
.
이 방법을 사용할 수 있습니다 :
$.validator.addMethod("pwcheck", function (value) {
return /[\@\#\$\%\^\&\*\(\)\_\+\!]/.test(value) && /[a-z]/.test(value) && /[0-9]/.test(value) && /[A-Z]/.test(value)
});
- 하나 이상의 대문자 영어
- 하나 이상의 소문자 영문
- 하나 이상의 숫자
- 하나 이상의 특수 문자
같은 없음 영어 글자 수보다 "일반적인"버전 (?), 특수 문자 .
^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$
var pwdList = [
'@@V4-\3Z`zTzM{>k',
'12qw!"QW12',
'123qweASD!"#',
'1qA!"#$%&',
'Günther32',
'123456789',
'qweASD123',
'qweqQWEQWEqw',
'12qwAS!'
],
re = /^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$/;
pwdList.forEach(function (pw) {
document.write('<span style="color:'+ (re.test(pw) ? 'green':'red') + '">' + pw + '</span><br/>');
});
이걸로 해봐:
- 최소 6 자
- 적어도 하나의 대문자
- 하나 이상의 소문자
- 하나 이상의 특수 문자
표현:
"/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.]{6, 20}/"
선택적 특수 문자 :
- 하나 이상의 특수 문자
- 하나 이상의 숫자
- 특수 문자는 선택 사항입니다
- 최소 6 자 및 최대 16 자
표현:
"/^(?=.*\d)(?=.*[a-zA-Z]).{6,20}$/"
최소 및 최대 조건이 필요하지 않은 경우 제거 .{6, 16}
- 6 은 글자 수 한도입니다
- 최대 글자 수 제한은 20 입니다
- ? = 는 일치 식을 의미
Peter Mortensen에게 답장을했지만 평판이 충분하지 않습니다.
그의 표현은 지정된 각 최소 요구 사항에 완벽합니다. 특수 문자가 필요없는 그의 표현의 문제점은 특수 문자도 허용하지 않기 때문에 최대 요구 사항을 적용한다는 점입니다. OP가 요청한 것으로 생각하지 않습니다. 일반적으로 사용자는 원하는만큼 비밀번호를 강력하게 만들 수 있습니다. 왜 강력한 암호를 제한해야합니까?
따라서 그의 "최소 8 자, 적어도 하나의 문자와 하나의 숫자"표현 :
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
최소 요구 사항을 달성하지만 나머지 문자는 문자와 숫자 만 가능합니다. 특수 문자를 허용하려면 (그러나 필수는 아님) 다음과 같은 것을 사용해야합니다.
^(?=.*[A-Za-z])(?=.*\d).{8,}$
모든 문자를 허용
또는
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d$@$!%*#?&]{8,}$
특정 특수 문자를 허용
마찬가지로 "최소 8 자, 하나 이상의 대문자, 하나의 소문자 및 하나의 숫자 :"
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
최소 요구 사항을 충족하지만 문자와 숫자 만 허용합니다. 사용하다:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
모든 문자를 허용
또는
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}
특정 특수 문자를 허용합니다.
Use the following Regex to satisfy the below conditions:
Conditions: 1] Min 1 uppercase letter.
2] Min 1 lowercase letter.
3] Min 1 special character.
4] Min 1 number.
5] Min 8 characters.
6] Max 30 characters.
Regex: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,30}$/
질문에 직접 대답하지는 않지만 실제로 정규식이어야합니까?
나는 Perl을 많이 사용했고 정규 표현식 문제를 해결하는 데 익숙했습니다. 그러나 모든 미리보기 및 기타 단점으로 인해 더 복잡해지면 작은 버그를 모두 죽이기 위해 수십 개의 단위 테스트를 작성해야합니다.
또한 정규 표현식은 일반적으로 명령 또는 기능 솔루션보다 몇 배 느립니다.
예를 들어, 다음 (FP가 아닌) 스칼라 함수는 가장 인기있는 답변의 정규식보다 약 3 배 빠른 원래 질문을 해결합니다. 또한 단위 테스트가 전혀 필요하지 않습니다.
def validatePassword(password: String): Boolean = {
if (password.length < 8)
return false
var lower = false
var upper = false
var numbers = false
var special = false
password.foreach { c =>
if (c.isDigit) numbers = true
else if (c.isLower) lower = true
else if (c.isUpper) upper = true
else special = true
}
lower && upper && numbers && special
}
필요에 따라이 패턴은 제대로 작동합니다. 이 시도,
^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}
문자열 변수를 만들고 패턴을 지정한 다음 패턴이 올바른 경우 true를 반환하고 그렇지 않으면 false를 반환하는 부울 메서드를 만듭니다.
견본:
String pattern = "^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}";
String password_string = "Type the password here"
private boolean isValidPassword(String password_string) {
return password_string.matches(Constants.passwordPattern);
}
(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+-]).{6}
@ClasG는 이미 다음을 제안했습니다 .
^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*[^\w\s])\S{8,}$
그러나 _ (밑줄)을 특수 문자 (예 : Aa12345_)로 허용하지 않습니다.
개선 된 것은 다음과 같습니다.
^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*\d)(?=\S*([^\w\s]|[_]))\S{8,}$
나는 여기에서 많은 문제를 발견했고, 나는 내 자신을 만들었다.
다음은 테스트를 통해 영광입니다.
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*([^a-zA-Z\d\s])).{9,}$
https://regex101.com/r/DCRR65/4/tests
주의 사항 :
- 내가 테스트하고있는를
\w
포함 하기 때문에 사용하지 않습니다_
. - 줄의 끝과 일치하지 않고 기호를 일치시키는 데 많은 문제가있었습니다.
- 기호를 구체적으로 지정하지 않으면 키보드마다 사용하는 로케일마다 다른 기호가있을 수 있기 때문입니다.
다음 정규식을 사용하여 아래 조건을 충족하십시오.
Conditions: 1] Min 1 special character.
2] Min 1 number.
3] Min 8 characters or More
정규식 :
^(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,}$
온라인 테스트 가능 : https://regex101.com
HTML5를 사용하면됩니다.
아래 코드를 패턴 속성에 사용하십시오.
pattern="(?=^.{8,}$)((?=.*\d)(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
완벽하게 작동합니다.
아래 정규식 패턴을 사용하여 비밀번호가 예상과 일치하는지 여부를 확인할 수 있습니다.
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&*()]).{8,20})
Java / Android에서 하나 이상의 숫자, 하나의 문자, 하나의 특수 문자를 사용하여 다음 패턴으로 비밀번호를 테스트합니다.
"^(?=.*[A-Za-z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{8,}$"
이 시도:
^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])[a-zA-Z0-9@#$%^&+=]*$
이 정규 표현식은 완벽하게 작동합니다.
function myFunction() {
var str = "c1TTTTaTTT@";
var patt = new RegExp("^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])[a-zA-Z0-9@#$%^&+=]*$");
var res = patt.test(str);
console.log("Is regular matches:", res);
}
적어도 1 개의 대문자, 1 자리 및 모든 특수 문자와 8-63 사이의 길이와 일치하는 패턴.
"^ (? =. [az]) (? =. [AZ]) (? =. * \ d) [a-zA-Z \ d \ W] {8,63} $"
이 패턴은 JAVA 프로그래밍에 사용되었습니다.
아래의 작동을 바랍니다. Azure 사용자 지정 정책에서 시도했습니다.
^ (? =. [az]) (? =. [AZ]) (? =. \ d) (? =. [@ # $ % ^ & * -_ + = [] {} | \ : ',? / ~"();!])([A-Za-z\d@#$%^&*\-_+=[\]{}|\\:',?/
~ "() ;!] |. (?! @)) {6,16} $
(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
온라인 링크 확인 https://regex101.com/r/mqGurh/1
나는 실제로 여기에 첫 번째 대답을 복사하여 하나의 대문자, 하나의 문자, 최소 8 문자가 필요하지만 "사이에있는"모든 항목을 허용 하는보다 편리한 ux 정규식 으로 바꿨습니다 .
이것은 예제 정규식입니다.
- 8 자 이상
- 하나 이상의 소문자
- 적어도 하나의 대문자
중요 :이 정규식 은 다른 모든 문자 (예 : 숫자, $, #,와 같은 특수 문자)를 제외한 다른 문자도 제외합니다. 등 -규칙 1에서 3까지만 입력 문자열과 일치
^(?=.*[a-z])(?=.*[A-Z]).{8,}$
"."마음 정규 표현식이 끝날 때마다 엉뚱한. 이것은 거의 모든 (그리고 읽을 수있는) 문자와 일치합니다
이전 답변 중 하나에서 찾은 솔루션은 다음과 같습니다.
최소 8 자 이상 대문자 알파벳 1 개, 소문자 알파벳 1 개, 숫자 1 개 및 특수 문자 1 개 : "^ (? =. [az]) (? =. [AZ]) (? =. \ d) (? =. [ $ @ $! % ? &]) [A-Za-z \ d $ @ $! % ? &] {8,} "
... 나에게는 효과가 없었지만 다음은 단순화 된 버전이며 훌륭하게 작동합니다 (좋아하는 특수 문자 추가, 여기에 # 추가). 문자와 마찬가지로 숫자 규칙을 추가하십시오.
"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@$!%*?&]){8,}"
'Programming' 카테고리의 다른 글
목록 요소의 가능한 모든 조합을 얻는 방법은 무엇입니까? (0) | 2020.02.29 |
---|---|
Enum 값을 문자열 리터럴로 사용 (0) | 2020.02.29 |
ArrayList를 문자열로 변환하는 가장 좋은 방법 (0) | 2020.02.29 |
왜 document.write가 "나쁜 습관"으로 간주됩니까? (0) | 2020.02.29 |
스칼라 : TypeTag 란 무엇이며 어떻게 사용합니까? (0) | 2020.02.29 |