Computer Science/웹 프로그래밍

정규 표현식의 활용

mitdog 2024. 7. 15. 22:58

정규 표현식. 흔히 아는 그거다.
C언어에서의 예로 들자면

scanf("%[^\n]s", ..); 
// 공백을 포함하여 입력받기 스킬(by 정규표현식)
// 저 의미는 줄바꿈(newLine)이 들어오기 전까지 입력받으라는 것이고
// 그 전의 모든 것은 다 받는다는 말이다(공백도 받는다, 원랜 scanf는 공백 안받음)

참고하면 좋을듯:

정규식(Regular Expression)

  • 형태: /pattern/modifiers

modifiers(수정자)

  1. i : 대소문자 구분 하지 않음
  2. g : 조건에 맞는 문자열 찾고도 더 검색
  3. m : 여러개의 행(multiple lines)을 검색

pattern 만들기

문자 패턴:

  1. [abc@!@#!] : 괄호 안의 모든 문자중 하나라도 있으면
  2. [^abc] : 괄호 안의 모든 문자중 하나라도 없어야
  3. [0-9] (혹은 a-z, A-Z) : 범위(경계포함) 안의 모든 문자중 하나라도 있으면
  4. [^0-9] : 범위(경계포함) 안의 모든 문자중 하나라도 없어야
  5. (x|y) : x일 경우.. y일 경우.. OR로 엮은거

문자 패턴 조건:
n은 어떠한 문자 패턴이다. (ex. [abc], [0-9], [&^@!])

  1. n+ : n이 적어도 하나는 존재해야
  2. n* : n이 있을 수도 있고, 없을 수도 있음(공백같은거)
  3. n? : n이 없거나, 한 번만 있어야
  4. n{X} : n이 X번 있어야
  5. n{X, Y} : n이 X번 이상 Y번 이하 번 있어야
  6. n{X, } : n이 X번 '이상' 있어야
  7. n$ : 끝이 n로 끝나야
  8. ^n : 시작이 n으로 시작해야
  9. ?=n : n이라는 문자열이 있는가?
  10. ?!ㅜ : 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))