특수문자 필터링 for JavaScript
정규표현식 표현방법
1. 정규 표현식 리터럴
const match = /pattern/flag
2. RegExp 호출
const match = new RegExp(pattern)
검색패턴
[^문자] | Not 문자 |
^문자열 | 특정 문자열로 시작 |
문자열$ | 특정 문자열로 끝남 |
| | OR |
[] | 괄호 내 문자열들 중 하나 |
{} | 반복 횟수 |
() | 괄호로 감싼 부분과 일치하는 부분 문자열을 기억. 나중에 불러와서 사용가능. |
반복패턴
? | 최대 한번 반복 ( 0 or 1) |
* | 0회 이상 반복 |
+ | 1회 이상 반복 |
. | 정확히 1개 문자 매칭 |
{n} | N번 반복 |
{n,} | 최소 n번 반복 |
{n,m} | 최소 n번 최대 m번 반복 |
확장문자
\s | 공백 문자(스페이스,탭, FF, LF) |
\S | 공백이 아닌 것 |
\b | 단어의 경계 |
\B | 이를 제외한 모든 문자를 매칭한다 |
\d | 숫자 |
\D | 숫자가 아닌 문자 (=[^0-9]) |
\w | =[A-Za-z0-9_] |
\W | =[^A-Za-z0-9_] |
\특문 | 해당 특수문자를 의미 |
플래그 값 (슬래시 뒤에 지정)
g | 전역매칭. 해당하는 문자 모두 탐색. 사용하지 않으면 매칭되는 첫문자만 |
i | 대소문자 무시 |
i | 여러 줄 매칭 |
예제로 알아보는 정규표현식
[예제1] 010-1234-5678 전화번호 필터링
구성: 숫자3개 - 숫자4개 - 숫자4개
표현: /\d{3}-\d{4}-\d{4}/
- /abc/ : abc가 있는 문자열
- \d{n} : n은 갯수, \d는 숫자를 의미
[예제2] 영어만 입력받는 경우
소문자만 표현: /[a-z]/
대문자만 표현: /[A-Z]/
+) 숫자만 표현: /[0-9]/
[예제3] a~z, A~Z, 0~9 사이 모든 문자
표현: /[a-zA-Z0-9]/
[예제4] id/pwd 체크. 숫자만 허용, 4~10자리
구성: 시작부터 영어와 숫자만 가능함.
표현: /^[A-Za-z0-9] {4,10}$/
[예제5] 한글 필터
표현: /[ㄱ-ㅎ|ㅏ-;|가-힣]/
[예제6] 이메일 체크
표현: /[a-z0-9]{2,}@[a-z0-0]{2,}/[a-z0-9]{2,}/i
표현2: /[\w\-\/.]@[\w\-\.]/
[예제7] 영문 숫자 조합체크
구성: 영어만 있으면 안됨. 그리고 숫자만 있어도 안됨.
표현: /[^a-z|^0-9]/gi
[예제8] 특수문자 제외 2~10글자
표현: /^[\w\Wㄱ-ㅎㅏ-ㅣ가-힣] {2,20}$/
RegExp 객체의 메서드
- test(): 문자열에서 일치하는 부분 탐색. T/F반환
- exec(): 문자열에서 일치하는 부분 탐색. 해당 부분 배열로 반환
String 객체의 메서드
- match(): 문자열에서 모든 일치하는 부분들 탐색. 해당 부분들 배열로 반환
- replace(): 매칭되는 부분을 대체 문자열로 변환
- search(): 탐색 후 일치하는 부분의 인덱스 반환
- split(): 문자열을 매칭되는 부분으로 쪼개서 배열로 반환
'보안 > 웹·모바일' 카테고리의 다른 글
XSS (Cross Site Script) 실습 (0) | 2022.07.15 |
---|---|
Blind SQL Injection 실습 (0) | 2022.07.15 |
Load of SQLInjection 문제풀이 (0) | 2022.07.15 |
Union SQL Injection 실습 (0) | 2022.07.14 |
Error-based SQL Injection 실습 (0) | 2022.07.12 |