정규 표현식. 흔히 아는 그거다.
C언어에서의 예로 들자면
scanf("%[^\n]s", ..);
// 공백을 포함하여 입력받기 스킬(by 정규표현식)
// 저 의미는 줄바꿈(newLine)이 들어오기 전까지 입력받으라는 것이고
// 그 전의 모든 것은 다 받는다는 말이다(공백도 받는다, 원랜 scanf는 공백 안받음)
참고하면 좋을듯:
- https://velog.io/@purplew/Javascript-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D
- https://regexper.com/ (정규식 만든거 확인할 수 있는 사이트)
정규식(Regular Expression)
- 형태: /pattern/modifiers
modifiers(수정자)
- i : 대소문자 구분 하지 않음
- g : 조건에 맞는 문자열 찾고도 더 검색
- m : 여러개의 행(multiple lines)을 검색
pattern 만들기
문자 패턴:
- [abc@!@#!] : 괄호 안의 모든 문자중 하나라도 있으면
- [^abc] : 괄호 안의 모든 문자중 하나라도 없어야
- [0-9] (혹은 a-z, A-Z) : 범위(경계포함) 안의 모든 문자중 하나라도 있으면
- [^0-9] : 범위(경계포함) 안의 모든 문자중 하나라도 없어야
- (x|y) : x일 경우.. y일 경우.. OR로 엮은거
문자 패턴 조건:
n은 어떠한 문자 패턴이다. (ex. [abc], [0-9], [&^@!])
- n+ : n이 적어도 하나는 존재해야
- n* : n이 있을 수도 있고, 없을 수도 있음(공백같은거)
- n? : n이 없거나, 한 번만 있어야
- n{X} : n이 X번 있어야
- n{X, Y} : n이 X번 이상 Y번 이하 번 있어야
- n{X, } : n이 X번 '이상' 있어야
- n$ : 끝이 n로 끝나야
- ^n : 시작이 n으로 시작해야
- ?=n : n이라는 문자열이 있는가?
- ?!ㅜ : n이라는 문자열이 없는가?
Example) 숫자-숫자-숫자 형태
/^[0-9]+\s*-\s*[0-9]+\s*-\s*[0-9]$/ => number-number-number
/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/ => 000-0000-0000
정규식 메서드
test 빼고는 전부 일치하지 않거나 없거나 하면 NULL 반환.
exec()
- 형태: 정규식.exec(문자열)
- 리턴: 검사 후 매치되는 첫 번째 문자열 반환
test()
- 형태: 정규식.test(문자열)
- 리턴: 검사 후 매치가 되면 true, 안되면 false 반환
문자열 검증 메서드
match()
- 형태: 문자열.match(정규식)
- 리턴: 검사 후 매치되는 첫 번째 문자열 반환
search()
- 형태: 문자열.search(정규식)
- 리턴: 검사 후 매치되는 문자열들 중 첫 번째 문자 위치 반환
Example)
exec)
var exp = /^[0-9]+$/;
var str = "......";
if(str.match(exp))
...
if(exp.test(str))
'Computer Science > 웹 프로그래밍' 카테고리의 다른 글
Node.js 설치, 간단한 실행까지 (0) | 2024.07.24 |
---|---|
캔버스와 JS(그림 그리기) (7) | 2024.07.23 |
이벤트 핸들러 부착(Attaching an Event Handler) (0) | 2024.07.14 |
HTML, JS 이벤트 처리 (2) | 2024.07.13 |
BOM 개념과 활용 (0) | 2024.07.10 |