정규식 유효성 검사: 치트시트(가장 많이 사용됨)

28052 단어 javaregexjavascriptphp
정규식은 종종 사용자 입력의 유효성을 검사하는 데 사용됩니다. 동일한 입력의 유효성을 검사할 때 반복됩니다. 따라서 가장 중요한 RegEx 문자열 목록을 만들었습니다.


이 기사를 저장하고 해당 정규식을 필요한 다음 프로젝트에 복사하십시오.

모든 RegEx 유효성 검사에는 구현에 무한한 가능성이 있습니다. 여기에 표시된 모든 항목을 광범위하게 테스트했습니다.

정규식을 보다 쉽게 ​​테스트하고 시행착오를 겪지 않기 위해 온라인에 여러 도구가 있습니다. 내가 가장 좋아하는 RegEx 유효성 검사기를 여기에 연결했습니다.
RegEx Validator

날짜 및 시간 확인



YYYMMDD 형식의 날짜(0-9999년)

(?<!\d)(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(?:(?:(?:0[13578]|1[02])31)|(?:(?:0[1,3-9]|1[0-2])(?:29|30)))|(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))0229)|(?:(?:1[6-9]|[2-9]\d)?\d{2})(?:(?:0?[1-9])|(?:1[0-2]))(?:0?[1-9]|1\d|2[0-8]))(?!\d)


YYYY-MM-DD 형식의 날짜

^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$


DD.MM.YYYY 형식의 날짜(앞에 0이 없음)

^[0-3]?[0-9][\/.][0-3]?[0-9][\/.](?:[0-9]{2})?[0-9]{2}$


DD.MM.YYYY 형식의 날짜(앞에 0 포함)

^[0-3][0-9][\/.][0-3][0-9][\/.](?:[0-9][0-9])?[0-9][0-9]$


M/D/YYY 형식의 날짜

^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$


HH:MM 형식의 시간(24시간 형식)

^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$


HH:MM:SS 형식의 시간(24시간 형식)

^([0-1]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$


HH:MM 형식의 시간(12시간 형식)

^(0?[1-9]|1[0-2]):[0-5][0-9]$


HH:MM:SS 형식의 시간(12시간 형식)

^(0?[1-9]|1[0-2]):[0-5][0-9]:[0-5][0-9]$


H:MM AM/PM 형식의 시간

^((1[0-2]|0?[1-9]):([0-5][0-9]) ?([AaPp][Mm]))$


H:MM:SS AM/PM 형식의 시간

^((1[0-2]|0?[1-9]):([0-5][0-9]):([0-5][0-9]) ?([AaPp][Mm]))$



비밀번호 확인



숫자와 영문만 가능(최소 8자)

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$


숫자, 대문자 및 소문자(최소 12자)

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&#\^]{12,}$



전화번호 및 휴대폰 번호 확인



가장 많이 사용되는 형식 인식(다른 국가)

(\(?([\d \-\)\–\+\/\(]+)\)?([ .\-–\/]?)([\d]+))



이메일 주소 확인



특정 도메인의 이메일 주소만(여기서는 *@gmail.com 및 @hotmail.com)

^([\w\-\.]+@(?!gmail.com)(?!hotmail.com)([\w\- ]+\.)+[\w-]{2,4})?$


모든 도메인

^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$



URL 확인



FTP 프로토콜을 사용하는 URL만

^(ftp:\/\/)[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$


표준 URL(다음 형식만: http(s)://example.com/, 포트 포함)

^(http:\/\/|https:\/\/)[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$


가능한 모든 URL 형식(IP 주소 및 앵커 포함)

^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$


다른 프로그래밍 언어로 구현



다른 프로그래밍 언어의 유효성 검사는 항상 약간 다르게 보입니다. 그러나 일반적으로 동일합니다.

모든 예에서 변수 regex를 위의 것으로 바꾸면 stringToValidate는 해당 사용자 입력이 있는 문자열을 포함해야 합니다.

JavaScript의 정규식 유효성 검사




let stringToValidate = "ZH*EnD?vv9Xf&y8"; // e.g. value from a textarea
let regex =
  /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&#\^]{12,}$/; // attention: no quotes!
if (stringToValidate.match(regex)) {
  // valid input
} else {
  // invalid input
}


PHP의 정규식 유효성 검사




$stringToValidate = "ZH*EnD?vv9Xf&y8";
$regex = "/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&#\^]{12,}$/"; // attention: add a slash at the begin and the end
if (preg_match($regex, $stringToValidate)) {
  // valid input
} else {
  // invalid input
}


Java의 정규식 유효성 검사




String stringToValidate = "ZH*EnD?vv9Xf$y8";
String regex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&#\\^]{12,}$";
if (stringToValidate.matches(regex)) {
  // valid input
} else {
  // invalid input
}


여기서 아직 누락된 유효성 검사는 무엇입니까? 저에게 의견을 작성 주시기 바랍니다! 🙂


➡️ On my blog 더 많은 튜토리얼과 기사를 찾을 수 있습니다!

읽어 주셔서 감사합니다! ❤️

좋은 웹페이지 즐겨찾기