Computer Science는 어렵다. 그 중 에서도 정규표현식이 가장 어렵다.

라는 말이 있을 정도로 정규표현식은 어렵습니다. 이것을 왜 배워야 하는지, 어떻게 활용하는지 한 번 알아봅시다.

<!DOCTYPE html>
<html>
<head>
  <title>정규표현식</title>
</head>
<body>
  <script>
    let s = '010100020201020304812123';
    document.write(s.replace(/[^(1-9)]/gi,""));
    // 특정문자 제거 : s.replace(/\\-/g,'');
    // 앞뒤 공백 제거 : s.replace(/^\\s+|\\s+$/g,'');
    // 문자열 내의 공백 제거 : s.replace(/\\s/g,'');
    // 개행 제거 : s.replace(/\\n/g,'');

		/*
		- `^` : 문자열의 시작
		- `$` : 문자열의 종료. 옵션에 따라 문장의 끝 또는 문서의 끝에 매치된다.
		- `.` : 임의의 한 문자
		- `[]`: 문자 클래스. 문자 클래스 안에 들어가 있는 문자는 그 바깥에서 하나의 문자로 취급된다.
		    - `^` : 문자 클래스 내에서 ^는 not
		    - `-` : ex) a-z는 a에서 z까지의 문자
		- `|` : or를 나타냄
		- `?` : 앞 문자가 없거나 하나 있음
		- `+` : 앞 문자가 하나 이상임
		- `*` : 앞 문자가 0개 이상임
		- `{n,m}` : 앞 문자가 `n`개 이상 `m`개 이하. `{0,1}` 은 `?`와 같은 의미다.
		- `{n,}` : 앞 문자가 `n`개 이상. 위의 형태에서 `m`이 생략된 형태이다. `{0,}` 이면 `*`와 같고 `{1,}` 이면 `+`와 같은 의미이다.
		- `{n}` : 앞 문자가 정확히 `n`개. `{n,n}` 과 같은 의미이다.
		- `()` : 하나의 패턴구분자 안에 서브 패턴을 지정해서 사용할 경우 괄호로 묶어주는 방식을 사용한다.
		- `\\s` : 공백문자
		- `\\b` : 문자와 공백 사이를 의미한다.
		- `\\d` : 숫자 [0-9]와 같다.
		- `\\t` : 탭문자
		- `\\w` : 단어 영문자+숫자+_(밑줄) [0-9a-zA-Z_]문자 이스케이프는 대문자로 적으면 반대를 의미한다.
		[a-z] : a ~ z 사이의 문자를 찾음
		[1-9] : 1 ~ 9 사이의 문자를 찾음
		[abc] : a, b, c중 하나를 찾음
		[^abc] : a, b, c를 제외한 문자를 찾음
		.z : 아무 문자 하나를 . 기호로 찾으며 z로 끝남을 의미
		a+ : a가 1개 이상을 의미함
		a* : a가 0개 또는 그 이상을 의미함
		s : 공백 문자를 찾음(스페이스, 탭 등), 대문자의 경우 아닌 문자를 찾음
		d : 숫자를 찾음, 대문자의 경우 아닌 문자를 찾음
		w : 알파벳 영문과 숫자와 언더바 _ 기호를 찾음, 대문자의 경우 아닌 문자를 찾음
		t : 탭 공간을 찾음
		g : 검색범위를 전역으로 확장
		i : 대소문자를 구분하지 않음
		gi : 검색 범위를 전역으로 확대하면서 대소문자를 구분하지 않음
		m : 여러줄을 동시에 매칭함
		*/
  </script>
</body>
</html>