SlideShare a Scribd company logo
[5분 따라하기]
전화번호와 이메일 정규표현식
박재호(jrogue@gmail.com)
참고 자료
• <컴퓨터 vs 책> 블로그
• http://jhrogue.blogspot.com/
• OKdevTV 유튜브 방송
• 오늘 방송:
• https://www.youtube.com/watch?v=5-
Iz8XQ_37A&list=PLdntWJk2tJPLKNNYBVCxnde2PEB6dzbSL&index=3
• 5분 따라하기 리스트:
• https://www.youtube.com/playlist?list=PLdntWJk2tJPLKNNYBVCxnde2PEB6dzbSL
• 슬라이드 셰어
• https://www.slideshare.net/jrogue/presentations
• ASCIINEMA
• https://asciinema.org/~jrogue
오늘 소개할 내용
• 자바스크립트로 전화번호와 이메일 유효성을 어떻게 점검할 것인가?
• 전화번호 형식을 검증하는 form을 만들고 싶다면?
• RFC-5322(Internet Message Format)에 맞춰 이메일 유효성을 검증하고
싶다면?
• 주의: SMTP 주소 validation은 생각 이상으로 복잡하다 →
https://emailregex.com/email-validation-summary/
자바스크립트에서 사용 가능한 정규 표현식
• 기본적인 사항은 비슷하지만…
• ?: → 비캡처링 괄호 → 문자열 기억을 방지함
• 1 → 캡처링한 첫번째 패턴을 대체
전화번호 스크립트
$ cat - > phone.js
var re = /(?:d{3}|(d{3}))([-/.])d{3}1d{4}/;
console.log(re.exec("111-222-3333"));
console.log(re.exec("(111)/222/3333"));
console.log(re.exec("(111).222.3333"));
console.log(re.exec("11-222-3333"));
$ node phone.js
[
'111-222-3333',
'-',
index: 0,
input: '111-222-3333',
groups: undefined
]
[
'(111)/222/3333',
‘/',
index: 0,
input: '(111)/222/3333',
groups: undefined
]
[
'(111).222.3333',
'.',
index: 0,
input: '(111).222.3333',
groups: undefined
]
null
이메일 스크립트
$ cat - > email.js
var re = /^(([^<>()[].,;:s@"]+(.[^<>()[].,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-
zA-Z]{2,}))$/
console.log(re.exec("'foobar@example.com"));
console.log(re.exec("foo.bar"));
console.log(re.exec("foo@@bar"));
console.log(re.exec("foo@@bar.com"));
$ node email.js
[
'foobar@example.com',
'foobar',
'foobar',
undefined,
undefined,
'example.com',
undefined,
'example.com',
'example.',
index: 0,
input: 'foobar@example.com',
groups: undefined
]
null
null
null
보면서 따라해봅시다~~~
• https://asciinema.org/a/316425
• https://asciinema.org/a/316426
참고 자료
• https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/
%EC%A0%95%EA%B7%9C%EC%8B%9D
• https://emailregex.com/

More Related Content

PDF
[5분 따라하기] git 다중 사용자 신원 설정 방법
Jay Park
 
PDF
[5분 따라하기] bash 타임아웃 패턴
Jay Park
 
PDF
[5분 따라하기] bash에서 파일 확장자 변경
Jay Park
 
PDF
2020년 5월 16일 개발 이야기 정리
Jay Park
 
PDF
[5분 따라하기] git으로 undo하기(remote편)
Jay Park
 
PDF
2020년 4월 4일 개발 이야기 정리
Jay Park
 
PDF
2020년 5월 2일 개발 이야기 정리
Jay Park
 
PDF
2020년 6월 6일 개발 이야기 정리
Jay Park
 
[5분 따라하기] git 다중 사용자 신원 설정 방법
Jay Park
 
[5분 따라하기] bash 타임아웃 패턴
Jay Park
 
[5분 따라하기] bash에서 파일 확장자 변경
Jay Park
 
2020년 5월 16일 개발 이야기 정리
Jay Park
 
[5분 따라하기] git으로 undo하기(remote편)
Jay Park
 
2020년 4월 4일 개발 이야기 정리
Jay Park
 
2020년 5월 2일 개발 이야기 정리
Jay Park
 
2020년 6월 6일 개발 이야기 정리
Jay Park
 

What's hot (20)

PDF
2020년 4월 18일 개발 이야기 정리
Jay Park
 
PDF
2020년 4월 25일 개발 이야기 정리
Jay Park
 
PDF
[5분 따라하기] git으로 undo하기(local편)
Jay Park
 
PDF
[5분 따라하기] paste로 파일 두 개 join하기
Jay Park
 
PDF
2020년 10월 10일 개발자 이야기
Jay Park
 
PDF
2020년 2월 1일 개발 이야기 정리
Jay Park
 
PDF
[5분 따라하기] 3차원 도넛을 콘솔에 그리기
Jay Park
 
PDF
[5분 따라하기] 3차원 지구본을 콘솔에 그리기
Jay Park
 
PDF
2020년 5월 9일 개발 이야기 정리
Jay Park
 
PDF
2021년 3월 20일 개발자 이야기
Jay Park
 
PDF
2020년 9월 12일 개발 이야기 정리
Jay Park
 
PDF
2020년 8월 1일 개발 이야기 정리
Jay Park
 
PDF
2020년 6월 13일 개발 이야기 정리
Jay Park
 
PDF
2020년 9월 19일 개발자 이야기
Jay Park
 
PDF
2020년 2월 스택오버플로 개발자 설문 결과
Jay Park
 
PDF
2021년 3월 13일 개발자 이야기
Jay Park
 
PDF
2020년 9월 26일 개발자 이야기
Jay Park
 
PDF
2020년 8월 30일 개발 이야기 정리
Jay Park
 
PDF
2021년 4월 10일 개발자 이야기
Jay Park
 
PDF
2021년 2월 6일 개발자 이야기
Jay Park
 
2020년 4월 18일 개발 이야기 정리
Jay Park
 
2020년 4월 25일 개발 이야기 정리
Jay Park
 
[5분 따라하기] git으로 undo하기(local편)
Jay Park
 
[5분 따라하기] paste로 파일 두 개 join하기
Jay Park
 
2020년 10월 10일 개발자 이야기
Jay Park
 
2020년 2월 1일 개발 이야기 정리
Jay Park
 
[5분 따라하기] 3차원 도넛을 콘솔에 그리기
Jay Park
 
[5분 따라하기] 3차원 지구본을 콘솔에 그리기
Jay Park
 
2020년 5월 9일 개발 이야기 정리
Jay Park
 
2021년 3월 20일 개발자 이야기
Jay Park
 
2020년 9월 12일 개발 이야기 정리
Jay Park
 
2020년 8월 1일 개발 이야기 정리
Jay Park
 
2020년 6월 13일 개발 이야기 정리
Jay Park
 
2020년 9월 19일 개발자 이야기
Jay Park
 
2020년 2월 스택오버플로 개발자 설문 결과
Jay Park
 
2021년 3월 13일 개발자 이야기
Jay Park
 
2020년 9월 26일 개발자 이야기
Jay Park
 
2020년 8월 30일 개발 이야기 정리
Jay Park
 
2021년 4월 10일 개발자 이야기
Jay Park
 
2021년 2월 6일 개발자 이야기
Jay Park
 
Ad

More from Jay Park (20)

PDF
[독서광] 코드 넘어 회사보다 오래 남을 개발자
Jay Park
 
PDF
(독서광) 윌 라슨의 엔지니어링 리더십 - 테크 리더를 위한 성공 전략
Jay Park
 
PDF
[독서광] 모던 소프트웨어 엔지니어링 - 소프트웨어 개발의 복잡함과 난해함 속에서 길을 찾으려는 엔지니어를 위한...
Jay Park
 
PDF
(독서광) Azure OpenAI로 ChatGPT와 LLM 시스템 쉽고 빠르게 구축하기
Jay Park
 
PDF
(독서광) 이펙티브 소프트웨어 설계 - 실수와 트레이드오프로부터 배우는 현명한 소프트웨어 설계 가이드
Jay Park
 
PDF
(독서광) 지능의 기원 - 우리의 뇌 그리고 AI를 만든 다섯 번의 혁신
Jay Park
 
PDF
(독서광) 린 프로덕트 플레이북: 시장에서 살아남는 프로덕트를 개발하는 6단계 프로세스
Jay Park
 
PDF
(OkdevTV) 2025년 1월 8일 개발 이야기
Jay Park
 
PDF
(독서광) 2024년 12월 모두를 위한 소프트웨어 보안 설계와 구현
Jay Park
 
PDF
(OkdevTV) 2024년 12월 18일 개발 이야기
Jay Park
 
PDF
(OKdevTV) 2024년 12월 5일 개발 이야기
Jay Park
 
PDF
(독서광) 2024년 11월 선택 설계자들 - 어떻게 함정을 피하고 탁월한 결정을 내릴 것인가
Jay Park
 
PDF
(OkdevTV) 2024년 10월 30일 개발 이야기
Jay Park
 
PDF
(OkdevTV) 2024년 10월 16일 개발 이야기
Jay Park
 
PDF
(독서광) 갈대 속의 영원 - 저항하고 꿈꾸고 연결하는 발명품, 책의 모험
Jay Park
 
PDF
(OkdevTV) 2024년 10월 2일 개발 이야기
Jay Park
 
PDF
(OkdevTV) 2024년 9월 2일 개발 이야기 - 좋은 리팩토링 vs 나쁜 리팩토링
Jay Park
 
PDF
[OkdevTV] 2024년 9월 2일 개발 이야기
Jay Park
 
PDF
[독서광] 프리세일즈 (Technical Presales) - 고객과 기업을 잇는 기술 대표
Jay Park
 
PDF
[OKdevTV] 2024년 8월 21일 개발 이야기
Jay Park
 
[독서광] 코드 넘어 회사보다 오래 남을 개발자
Jay Park
 
(독서광) 윌 라슨의 엔지니어링 리더십 - 테크 리더를 위한 성공 전략
Jay Park
 
[독서광] 모던 소프트웨어 엔지니어링 - 소프트웨어 개발의 복잡함과 난해함 속에서 길을 찾으려는 엔지니어를 위한...
Jay Park
 
(독서광) Azure OpenAI로 ChatGPT와 LLM 시스템 쉽고 빠르게 구축하기
Jay Park
 
(독서광) 이펙티브 소프트웨어 설계 - 실수와 트레이드오프로부터 배우는 현명한 소프트웨어 설계 가이드
Jay Park
 
(독서광) 지능의 기원 - 우리의 뇌 그리고 AI를 만든 다섯 번의 혁신
Jay Park
 
(독서광) 린 프로덕트 플레이북: 시장에서 살아남는 프로덕트를 개발하는 6단계 프로세스
Jay Park
 
(OkdevTV) 2025년 1월 8일 개발 이야기
Jay Park
 
(독서광) 2024년 12월 모두를 위한 소프트웨어 보안 설계와 구현
Jay Park
 
(OkdevTV) 2024년 12월 18일 개발 이야기
Jay Park
 
(OKdevTV) 2024년 12월 5일 개발 이야기
Jay Park
 
(독서광) 2024년 11월 선택 설계자들 - 어떻게 함정을 피하고 탁월한 결정을 내릴 것인가
Jay Park
 
(OkdevTV) 2024년 10월 30일 개발 이야기
Jay Park
 
(OkdevTV) 2024년 10월 16일 개발 이야기
Jay Park
 
(독서광) 갈대 속의 영원 - 저항하고 꿈꾸고 연결하는 발명품, 책의 모험
Jay Park
 
(OkdevTV) 2024년 10월 2일 개발 이야기
Jay Park
 
(OkdevTV) 2024년 9월 2일 개발 이야기 - 좋은 리팩토링 vs 나쁜 리팩토링
Jay Park
 
[OkdevTV] 2024년 9월 2일 개발 이야기
Jay Park
 
[독서광] 프리세일즈 (Technical Presales) - 고객과 기업을 잇는 기술 대표
Jay Park
 
[OKdevTV] 2024년 8월 21일 개발 이야기
Jay Park
 
Ad

[5분 따라하기] 전화번호와 이메일 정규표현식

  • 2. 참고 자료 • <컴퓨터 vs 책> 블로그 • http://jhrogue.blogspot.com/ • OKdevTV 유튜브 방송 • 오늘 방송: • https://www.youtube.com/watch?v=5- Iz8XQ_37A&list=PLdntWJk2tJPLKNNYBVCxnde2PEB6dzbSL&index=3 • 5분 따라하기 리스트: • https://www.youtube.com/playlist?list=PLdntWJk2tJPLKNNYBVCxnde2PEB6dzbSL • 슬라이드 셰어 • https://www.slideshare.net/jrogue/presentations • ASCIINEMA • https://asciinema.org/~jrogue
  • 3. 오늘 소개할 내용 • 자바스크립트로 전화번호와 이메일 유효성을 어떻게 점검할 것인가? • 전화번호 형식을 검증하는 form을 만들고 싶다면? • RFC-5322(Internet Message Format)에 맞춰 이메일 유효성을 검증하고 싶다면? • 주의: SMTP 주소 validation은 생각 이상으로 복잡하다 → https://emailregex.com/email-validation-summary/
  • 4. 자바스크립트에서 사용 가능한 정규 표현식 • 기본적인 사항은 비슷하지만… • ?: → 비캡처링 괄호 → 문자열 기억을 방지함 • 1 → 캡처링한 첫번째 패턴을 대체
  • 5. 전화번호 스크립트 $ cat - > phone.js var re = /(?:d{3}|(d{3}))([-/.])d{3}1d{4}/; console.log(re.exec("111-222-3333")); console.log(re.exec("(111)/222/3333")); console.log(re.exec("(111).222.3333")); console.log(re.exec("11-222-3333")); $ node phone.js [ '111-222-3333', '-', index: 0, input: '111-222-3333', groups: undefined ] [ '(111)/222/3333', ‘/', index: 0, input: '(111)/222/3333', groups: undefined ] [ '(111).222.3333', '.', index: 0, input: '(111).222.3333', groups: undefined ] null
  • 6. 이메일 스크립트 $ cat - > email.js var re = /^(([^<>()[].,;:s@"]+(.[^<>()[].,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a- zA-Z]{2,}))$/ console.log(re.exec("'[email protected]")); console.log(re.exec("foo.bar")); console.log(re.exec("foo@@bar")); console.log(re.exec("foo@@bar.com")); $ node email.js [ '[email protected]', 'foobar', 'foobar', undefined, undefined, 'example.com', undefined, 'example.com', 'example.', index: 0, input: '[email protected]', groups: undefined ] null null null
  • 7. 보면서 따라해봅시다~~~ • https://asciinema.org/a/316425 • https://asciinema.org/a/316426