자바스크립트 정규표현식 정리

HyosikPark·2020년 11월 13일
2

Javascript

목록 보기
25/26

정규표현식 생성

두가지 방법
let regexp = new RegExp('pattern', 'flags'); // /pattern/flags
let regexp = /pattern/flags

정규표현식 특수문자

\ : \뒤에 일반 문자가 오면(\b) 특수한 기능이 적용되고 
\뒤에 특수기능이 있는 문자가 오면(\*) 기능이 없는 문자처럼 취급* 

*, {0,}: 앞의 표현식이 0회이상 반복되는 부분과 대응 즉 앞의 표현식이 문자열에 없어도 공백반환 
let str= 'addddddd' 

str.match(/d*/) // [''] 공백 배열 반환. 

문자열의 처음(a)는 d가 0회 포함 되어있는 개념으로 보아 공백 반환.
str.match(/ad*/ // ['addddddd'] 
그냥 안쓰는게 좋은듯하다..;

+, {1,} : 앞의 표현식이 1회 이상 반복되는 부분과 대응
 abc전체를 매칭하고 싶을  (?:abc)+

? {0,1}: 앞의표현식이 1회 있으면 대응 없으면(0) 공백 반환
'angel'.match(/e?l/) // el반환

^(캐럿기호): 텍스트의 시작 위치에 대응
$: 텍스트의 마지막 위치에 대응

. : 줄바꿈 문자(\n)를 제외한 모든 문자와 일치. 공백포함
[\s\S], [^]: 빈 문자열을 제외한 모든 문자와 일치

x(?=y) : x뒤에 y가 있을 때만 x를 대응

let str = 'Jack JackSprat'
str.match(/Jack(?=Sprat)/) 뒤에 Sprat이 붙은 Jack만 반환. 

x(?!y): x뒤에 y가 없는 경우에만 x 대응

|: 또는

{n}: 앞의 표현식이 n번 나타나는 부분에 대응

{n,m}: 앞문자가 최소 n개 이상일 때 최대 m개까지 대응

[xyz] : 괄호안의 어떤 문자와도 일치하는 경우 대응
괄호안에서 특수문자 사용시 ^, \b를 제외하고 인식 안됨

[^xyz]: 괄호안의 어떤 문자와도 일치하는 않는 문자와 대응

[\b]: 백스페이스에 대응

\b: 단어 경계 즉 다른 단어(숫자 포함)가 앞이나 뒤에 등장하지 않는 공백위치에 대응
*\s와 다르게 공백을 반환하지는 않음.

[a-d], [1-4] : [abcd], [1234]

\t : 탭에 대응

\n: 공백에 대응

\d, [0-9]:숫자에 대응하는 정규식

\s(space): 스페이스 ,, 줄바꿈  등을  포함하는 공백기호 대응

한번의 공백이 몇칸이던 match 메서드 배열에는 한칸의 공백반환
ex) let str = 1  	d 3 
str.match(/\s/g) : [' ', ' ']
\s가 아닌 스페이스바를 삽입해도 똑같이 작동
str.match(/ /g) : [' ', ' ']

\w(word), [A-Za-z0-9_]: 라틴 문자, 숫자, 밑줄(_)에 대응

\D, [^0-9]: 숫자가 아닌 문자를 찾음. 

\S: 공백이 아닌 문자를 찾음.

\W, [^A-Za-z0-9_]: 숫자, 단어가 아닌 비라틴 문자, 공백 등을 찾음.

flags

i : 패턴을 찾을 때 대소문자 구분없이 찾음.

g : 패턴과 일치하는 값을 모두 찾음.

s: /./이 줄바꿈을 포함 모든 문자와 일치하게 함

m: 다중 행 모드 활성화

method

let str = 'string'
let regEx = /pattern/flags

str.match(regEx) : 정규표현식에 대응하는 문자열을 배열로 반환

regEx.test(str) : 정규표현식에 대응하는 문자열을 포함하는 경우 true 반환

str.replace(regEx,'newString') : 정규표현식에 대응하는 문자열들을 새로운 문자열로 대체

다중 행 모드 m

^(캐럿기호): 텍스트의 시작위치에 대응
다중 행모드 m에서는 각행의 시작위치에 대응

$: 텍스트의 마지막 위치에 대응
다중 행모드 m에서는 각행의 마지막위치에 대응

let str = `1st place: Winnie
2nd place: Piglet
3rd place: Eeyore`;

alert( str.match(/^\d/gm) ); // [1, 2, 3]
각 행의 첫 시작이 숫자인 모든 값 반환

let str = `Winnie: 1
Piglet: 2
Eeyore: 3`;

alert( str.match(/\d$/gm) ); // [1,2,3]
각 행의 마지막이 숫자인 모든 값 반환

참고

https://ko.javascript.info/
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/%EC%A0%95%EA%B7%9C%EC%8B%9D

0개의 댓글