Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Invalid character found in method name
- jdbc connector
- API 설계
- foreign key constraint fails
- reflog
- event loop
- Late row lookup
- 페이지네이션 최적화
- 제약 조건
- code --no-sandbox
- programmers
- constraint fails
- 1452
- 23000
- Query String
- debezium
- Path Variable
- Cannot delete or update a parent row: a foreign key constraint fails
- Pagination Optimization
- 1450
- kafka-connect
- Cannot add or update a child row: a foreign key constraint fails
- kafkaconnect
- kafka connect
- 참조무결성
- 페이지네이션
- 문자열 검증
- Git
- git rebase -i
- git reflog
Archives
- Today
- Total
Kawaii_Jordy
[JS] 정규 표현식 개념 및 활용법 본문
정규 표현식 정의
정규 표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 대부분 문자열 검증에 사용이 되며 정규 표현식은 정규식, regex, regexp라 불리기도 한다.
표현식 | 의미 |
^ | 문자열의 시작 |
$ | 문자열의 종료 |
* | 반복여부를 표현하며, 앞의 표현식이 0개 또는 0개이상 연속으로 반복되는 부분과 대응된다 (앞의 문자가 없거나 0개이상 또는 무한정으로 많은 경우) |
+ | 반복을 표현하며, 앞의 표현식이 1회이상 연속으로 반복되는 부분과 대응된다 (앞의 문자가 1개 이상인 경우) |
? | 존재여부를 표현하며, 앞의 표현식이 0또는 1회 등장하는 부분과 대응된다 (앞의 문자가 없거나 1개 있는 경우) |
. | 임의의 한 문자 자리수를 표현하며, 개행문자를 제회한 모든 단일 문자와 대응된다 (+. : 반드시 한개는 있어야됨) |
| | or을 표현하하며, 앞 또는 뒤에 문자가 존재함을 의미한다 |
[xy] | 괄호는 일련의 문자를 찾는데 사용한다 [xy] : x와 y 중 하나를 의미 [^xy] : x y를 제외한 문자를 의미(^:부정) [x-y] : x~z사이의 문자를 의미(-:범위를 나타낸다) |
{n,m} | 앞의 문자가 최소 n개, 최대 m개가 나타나는 경우 예를들어, {8,20} 비밀번호는 8자리에서 20자리를 입력해야 됨 |
() | 그룹을 표현하며, 소괄호안의 문자를 하나의 문자로 인식한다 |
\s | 공백(space)문자를 의미한다 |
\S | 공백문자가 아닌 것을 의미한다 (not space) |
\d | 숫자 = [0-9] |
\D | 숫자를 제외한 모든 문자 = [^0-9] |
\w | 알파벳이나 숫자 |
\W | 알파벳이나 숫자를 제외한 문자 |
(?!) | 앞부분에 (?!) 넣어주면 대소문자를 구분하지 않는다 |
자주 사용되는 정규 표현식
의미 | 표현식 |
숫자만 | /^[0-9]*$/ |
영문자만 | /^[a-zA-Z]*$/ |
한글만 | /^[가-힣]*$/ |
영어&숫자만 | /^[a-zA-Z0-9]*$/ |
전화번호 | /^\d{2,3}-\d{3,4}-\d{4}$/ : 시작을 숫자 2~3개로하며/하이픈/숫자가 3~4개 존재하며/하이픈/숫자 4개로 끝남 |
휴대폰 | /^01(0|1|[6-9]?)-?([0-9]{3,4})-?([0-9]{4})$/ : 시작을 숫자 01로시작하며 그후에 0,1,6-9중에 하나가 오며/하이픈(존재할수도있으며)/숫자3~4개 존재하며/하이픈(존재할수도있으며)/숫자4개로 끝남 |
주민등록번호 | /\d{6} \- [1-4]\d{6}/ |
/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]*\.[a-zA-Z]{2,3}$/i : 시작을 숫자 0~9 또는 a-z A-Z 알파벳으로 시작하며 중간에 -_ . 같은 문자가 있으수도 있으며 그후에 숫자 0~9 또는 a-z A-Z 알파벳중 하나의 문자가 없거나 연달아 올수있으며/ @반드시 존재하며/반드시 "." 존재하며/a-z A-Z 의 문자가 2,3개가 존재 / 이모든것은 대소문자 구분안함/ /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i |
정규 표현식에서의 FLAG
FLAG | 의미 |
g | 대상 문자열내의 모든 패턴들을 검색하는것을 의미한다.(global) |
i | 대소문자를 구분하지 않는다.(ignore case) |
m | 대상문자열이 다중라인의 문자열인 경우에도 검색하는것을 의미한다.(multi line) |
JS에서 쓰이는 정규식 메소드
메소드 | 의미 |
test() | 문자열에서 일치하는 항목을 검사하는 메소드로 true,false를 반환한다 |
search() | 문자열이 있는지 검사하는 string 메소드이며, 대응된부분의 인덱스를 반환하며, 대응되는 문자열을 찾지 못했다면 -1을 반환한다 |
replace() | 문자열을 찾아 다른 문자열로 치환하는 string메소드 |
match() | 일치하는 문자열이 있다면 그 결과를 반환하고, 일치하는 문자열이 없으면 null을 반환한다 |
크롬 개발자 도구에서 간단하게 테스트를 해보자면
test()를 통해서 자연수인지 확인할 수 있는 간단한 정규식을 만들어 보았는데 잘 동작이 된다.
이번엔 match()를 통해서 "YYYY-mm-dd"형식이 맞는 지 체크하고 맞다면 YYYY, mm, dd 값을 반환해주는 테스트를 해보았다.
다양한 곳에서 정규 표현식이 사용되겠지만, API 설계 시 Query String이나 Path Variable의 값을 검증하는데 많이 사용되고 있다.
'취준 > 일반 개발 지식' 카테고리의 다른 글
[Network] HA Proxy (0) | 2021.06.16 |
---|---|
[flaky test] (0) | 2021.06.03 |
[Flaky Test] 정의 및 주의할 점 (0) | 2021.05.26 |
[regex] match (0) | 2021.05.26 |
[Swagger] 작성법 정리 및 예제 실습 (0) | 2021.05.10 |
Comments