IT/JavaScript

정규식 표현식

솔B 2022. 3. 30. 13:43

문법 정리

Groups and ranges

| 또는
() 그룹
[] 문자셋, 괄호 안에 어떤 문자든
[^] 부정 문자셋, 괄호 안에 어떤 문자가 아닐 때
(?:) 찾지만 기억하지는 않음

Quantifiers

? 없거나 있거나 (zero or one)
* 없거나 있거나 많거나 (zero or more)
+ 하나 또는 많이 (one or more)
{n} n번 반복
{min,} 최소
{min,max} 최소, 최대

Boundary-type

\b 단어의 경계
\B 단어의 경계가 아님
^ 문자의 시작
$ 문장의 끝

Character classes

\ 특수 문자가 아닌 문자
. 어떤 글자
\d digit 숫자
\D digit 숫자 아님
\w word 문자
\W word 문자 아님
\s space 공백
\S space 공백 아님

 

사용 예시

 const answer = new_id
    .toLowerCase() // 1
    .replace(/[^\w\d-_.]/g, "") // 2
    .replace(/\.{2,}/g, ".") // 3
    .replace(/^\.|\.$/g, "") // 4
    .replace(/^$/g, "a") // 5
    .slice(0, 15) // 6
    .replace(/\.$/g, ""); // 7

1. 모든 대문자를 대응되는 소문자로 치환

2. 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거

  • [^] 괄호안의 문자가 아닐 경우 제거

3. 마침표가 2번 이상 연속되는 부분을 하나의 마침표로 치환

  • 최소 2개 이상인 경우 .로 치환

4. 처음이나 끝에 마침표가 위치한다면 제거

  • ^문장의 시작에 마침표가 있거나(|) $문장의 끝에 마침표가 있다면 제거

5. 빈 문자열이라면 'a'를 대입

  • ^문장의 시작과 $문장의 끝이 없다면 'a'로 치환

6. 15개의 문자를 제외한 나머지 문자열들을 모두 제거

  • slice는 slice(begin, end)으로 begin부터 end까지에 대한 얕은 복사본을 새로운 배열 객체로 반환한다. 원본 배열은 바뀌지 않음!

7. 제거 후 마침표가 끝에 위치한다면 끝에 위치한 마침표 문자를 제거

  • $문장의 끝에 마침표가 있다면 제거

정규식 연습 사이트

https://regexr.com/5ml92

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

정규식 퀴즈 사이트

https://regexone.com/