👊

정규표현식

notion image
notion image
notion image
출처 :

이메일 유효성 검사

let regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;

휴대전화 번호 유효성 검사

let regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;

리터럴 패턴

정규표현식 규칙을 슬래시(/)로 감싸 사용합니다. 슬래시 안에 들어온 문자열이 찾고자 하는 문자열이며, 컴퓨터에게 '슬래시 사이에 있는 문자열을 찾고 싶어!'라고 명령을 내리는 것입니다.
let pattern = /w/; // 'w 를 찾을 거야!' 라고 컴퓨터에게 명령을 내리는 것입니다. // 찾고 싶은 w를 pattern 이라는 변수에 담아놨기 때문에 이 변수를 이용하여 w 를 찾을 수 있습니다.

생성자 함수 호출 패턴

RegExp 객체의 생성자 함수를 호출하여 사용합니다.
let pattern = new RegExp('w'); // new 를 이용해서 정규 표현식 객체를 생성하고, // 리터럴 패턴과 동일하게 'w 를 찾을 거야!' 라는 명령입니다.

정규표현식 내장 메소드

RegExp 객체의 메소드

exec()

exec 는 execution 의 줄임말로, 원하는 정보를 뽑아내고자 할 때 사용합니다. 검색의 대상이 찾고자 하는 문자열에 대한 정보를 가지고 있다면 이를 배열로 반환하며, 찾는 문자열이 없다면 null을 반환합니다.
let pattern = /w/; // 찾고자 하는 문자열 pattern.exec('hello world') // 검색하려는 대상을 exec 메소드의 첫 번째 인자로 전달합니다. // 즉, 'hello world' 가 'w' 를 포함하고 있는지를 확인합니다. // 이 경우 'c' 가 포함되어 있으므로, ['w'] 를 반환합니다.

test()

찾고자 하는 문자열이 대상 안에 있는지의 여부를 boolean 으로 리턴합니다.
let pattern = /w/; pattern.test('hello world'); // 이 경우는 'hello world'가 'w'를 포함하고 있으므로 true 를 리턴합니다.

String 객체의 메소드

match()

RegExp.exec() 와 비슷한 기능을 하며, 정규 표현식을 인자로 받아 주어진 문자열과 일치된 결과를 배열로 반환합니다. 일치되는 결과가 없으면 null 을 리턴합니다.
let pattern = /w/; let str = 'hello world'; str.match(pattern); // str 안에 pattern 이 포함되어 있으므로, ['w'] 를 반환합니다.

replace()

'검색 후 바꾸기'를 수행합니다. 첫 번째 인자로는 정규표현식을 받고, 두 번째 인자로는 치환하려는 문자열을 받습니다. 문자열에서 찾고자 하는 대상을 검색해서 이를 치환하려는 문자열로 변경 후 변경된 값을 리턴합니다.
let pattern = /w/; let str = 'hello world'; str.replace(pattern, 'W'); // str 안에서 pattern 을 검색한 후 'W' 로 변경하여 그 결과를 리턴합니다. // 여기서는 'hello World'가 반환됩니다.

split()

주어진 인자를 구분자로 삼아, 문자열을 부분 문자열로 나누어 그 결과를 배열로 반환합니다.
"123,456,789".split(",") // ["123", "456", "789"] "12304560789".split("0") // ["123", "456", "789"]

search()

정규표현식을 인자로 받아 가장 처음 매칭되는 부분 문자열의 위치를 반환합니다. 매칭되는 문자열이 없으면 -1을 반환합니다.
"JavaScript".search(/script/); // -1 대소문자를 구분합니다 "JavaScript".search(/Script/); // 4 "codestates".search(/ode/); // 1

형식: /정규식/

  1. : 범위(어디에서 어디까지)
      • a-z : a에서 z까지를 의미
      • 0-9 : 0에서 9까지를 의미
      • ㄱ-ㅎ : ㄱ에서 ㅎ까지를 의미
      • ㅏ-ㅣ : ㅏ에서 ㅣ 까지를 의미
      • 가-힣 : '가'에서 '힣'까지를 의미
  1. [] : 괄호 안에 문자중 1개
      • [a-z] : a에서 z중 하나.
      • [abc]d : ad, bd, bd 를 의미
  1. [^] : 괄호안의 문제 부정(제외)
      • [^a-z] : a ~ z를 제외한 모든 문자
      • [^0-9] : 숫자를 제외한 모든 문자
  1. | : 또는(OR)
      • [a-z|A-Z] : a ~ z 또는 A ~ Z 의미(영어 전체)
      • [ㄱ-ㅎ|ㅏ-ㅣ|가-힣] : ㄱ ~ ㅎ 또는 ㅏ ~ ㅣ 또는 가 ~ 힣 의미(한글 전체)
  1. ^ : 문자열의 처음
      • ^[a-zA-Z] : 영문자로 시작해야함
  1. $ : 문자열의 끝
      • [a-zA-Z]$ : 영문자로 끝나야함
      • ^[a-zA-Z]$ : 영문자로 시작하고, 영문자로 끝나야함
  1. : 0회 이상(여러개)
      • ^[a-zA-Z]*$ : 여러개의 문자가 모두 영문자여야 함
      • ^[0-9]*$ : 여러개의 문자가 모두 숫자여야 함
      • ^[a-zA-Z0-9]*$ : 여러개의 문자가 모두 영문자나 숫자여야 함
  1. {m, n} : m회 이상, n회 이하
      • ^[a-zA-Z]*${1, 10} : 영문자 1자 이상, 10자 이하
출처:
[카레유]