ioerror

자주 사용하는 정규표현식 모음 본문

JavaScript

자주 사용하는 정규표현식 모음...

반응형

정규표현식이란

정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다. 자바스크립트에서, 정규 표현식 또한 객체입니다.  이 패턴들은 RegExp의 exec 메서드와 test 메서드  , 그리고 String의  match메서드 , replace메서드 , search메서드 ,  split 메서드와 함께 쓰입니다.

라고 MDN에서 설명하고 있다. "정규식"이라고도 말하는데 사람 이름 같아서 나는 "정규표현식"이라 하는 것이 좋다.

다시 말해 문장에서 특정 형식의 문자열을 검색하거나, 그것을 다른 문자열로 치환할 때 필요하다.

특히나 요즘 데이터 분석에서는 필수적으로 알아야 할 부분이고 깊이 파고들려면 책을 사서 공부를 해야 할 정도이다.

데이터 분석이 아닌 앱, 웹 개발에서는 사실 사용하는 정규표현식은 거의 정해져 있다고 볼 수 있다.

이메일 주소, 도메인 주소, 금액 형식을 숫자 형식으로 변경 또는 그 반대, 아이디 검사 등의 특정 정규표현식은 정말 자주 사용된다.

 

자주 사용되는 정규표현식

1. 이메일 주소 정규표현식

/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;

/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]+$/;

/^[a-z0-9_+.-]+@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/;

 

2. URL 주소 정규표현식

/* 모든 프로토콜 포함 */
/^(file|gopher|news|nntp|telnet|https?|ftps?|sftp):\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/

/* http(s):// 프로토콜이 있거나 없는 경우, 단순히 도메인 구조 검사 */
/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?/

 

3. 전화번호 정규표현식

/* 유선 전화 번호 */
/^(0[2-8][0-5]?)-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/

/* 휴대폰 (무선전화) 번호 */
/^(01[01346-9])-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/

/* 유전 전화 + 휴대폰 번호 */
/^(0[2-8][0-5]?|01[01346-9])-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/

/* 대표전화번호 1588 등 */
/^(1544|1566|1577|1588|1644|1688)-?([0-9]{4})$/

 

4. 날짜 형식 정규표현식

/* 2021-01-01 또는 21-01-01 으로 구분자는 하이픈(-), 점(.), 슬래시(/) 로 입력된 경우 */
/^\d{2,4}\[-.\/]\d{1,2}\[-.\/]\d{1,2}$/

/* 2021-01-01 또는 21-01-01 */
/^\d{2,4}-\d{1,2}-\d{1,2}$/

/* 2021/01/01 또는 21/01/01 */
/^\d{2,4}\/\d{1,2}\/\d{1,2}$/

/* 2021.01.01 또는 21.01.01 */
/^\d{2,4}\.\d{1,2}\.\d{1,2}$/

 

5. 주민등록번호, 외국인 등록번호 정규표현식

/* 주민등록번호 */
/^([0-9]{6})-?([0-9]{7})$/
/^(\d{6})-?(\d{7})$/

/* 외국인등록번호 */
/^(\d{6})-?(\d{5}[7-9]\d{1})$/

 

6. 사업자등록번호, 법인등록번호 정규표현식

/* 사업자등록번호 */
/([0-9]{3})-?([0-9]{2})-?([0-9]{5})/

/* 법인등록번호 */
/^([0-9]{6})\-([0-9]{7})$/

 

7. 영어 알파벳, 숫자 또는 한글, 공백, HTML 등 의 상황별 정규표현식

/* 영어와 숫자만 입력 (alnum) */
/^[0-9a-zA-Z]+$/

/* 한글만 입력 */
/^[ㄱ-힣]+$/

/* 영어만 입력 */
/^[a-zA-Z]+$/

/* 숫자만 입력 */
/^[0-9]+$/

/* 소숫점이 있는 금액 형식 */
/^[0-9\,\.]+$/

/* 공백(스페이스) */
/\s/

/* HTML 코드 */
/\<(/?[^\>]+)\>/

/* 첨부파일 지정된 확장자 확인 */
/([^\s]+(?=\.(jpg|gif|png))\.\2)/

 

8. 비밀번호 제약 정규표현식

/* 특수문자가 최소 1개 이상 포함된 영어,숫자 조합의 6~30개의 글자 */
/^(?=.*[a-zA-Z])((?=.*\d)|(?=.*\W))(?=.*[!@#$%^*+=-]).{6,30}$/

 

정규표현식의 문법은

언어별(C, PHP, JS...)로 비슷하지만 사용법상에서 약간의 차이가 있으니 중요한 곳(결재, 금융, 데이터 분석 등)에 사용할 경우 작성한 정규표현식을 테스트해보는 것이 좋겠다.

아래는 정규표현식 테스트를 할 수 있는 사이트이며, 입력한 정규식의 내용을 설명을 해주는 기능이 있고(물론 영어로) 테스트도 가능하다.

regex101은 JS, PHP, Python, Java, GoLang 등의 언어별 정규표현식을 테스트할 수 있고, Regex Library에서 예제도 찾을 수 있다.

regexr은 CheatSheet와 정규식을 공유한 Community Pattern 이 유용하다.

 

https://regex101.com/

 

regex101: build, test, and debug regex

Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java. Features a regex quiz & library.

regex101.com

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

반응형
Comments