9/11 (수) / 11:00~ / 진달래
^[_a-zA-Z0-9]+([-+.][_a-zA-Z0-9]+)*@[_a-zA-Z0-9]+([-.][_a-zA-Z0-9]+)*\.[_a-zA-Z0-9]+([-.][_a-zA-Z0-9]+)*$
특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. Text에서 특정한 포맷으로 되어있는 값을 검색/치환해야하는 경우에 쓸 수 있다.
문자열을 토큰으로 변환하는 과정에서 텍스트를 좌에서 우로 검사하면서 여러 규칙과 일치될 문자의 수량을 다양하게 시도하는 처리에 가작 적합할 뿐 파싱에는 적절치 않다.
- 1개의 문자와 일치한다. 단일행 모드에서는 새줄 문자를 제외한다.
- 특수 문자를 식에 문자 자체로 포함한다.
- 여러 식 중에서 하나를 선택한다. 예를 들어, "abc¦adc"는 abc와 adc 문자열을 모두 포함한다.
- 문자 클래스 안의 문자를 제외한 나머지를 선택한다. 예를 들면 [abc]d는 ad, bd, cd는 포함하지 않고 ed, fd 등을 포함한다. [a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미한다.
- "["과 "]" 사이의 문자 중 하나를 선택한다. "¦"를 여러 개 쓴 것과 같은 의미이다.
- 예를 들면 abcd는 ad, bd, cd를 뜻한다. 또한, "-" 기호와 함께 쓰면 범위를 지정할 수 있다. "[a-z]"는 a부터 z까지 중 하나, "[1-9]"는 1부터 9까지 중의 하나를 의미한다.
- 여러 식을 하나로 묶을 수 있다. "abc¦adc"와 "a(b¦d)c"는 같은 의미를 가진다.
- 0개 이상의 문자를 포함한다. "a*b"는 "b", "ab", "aab", "aaab"를 포함한다.
- "a+b"는 "ab", "aab", "aaab"를 포함하지만 "b"는 포함하지 않는다.
- "a?b"는 "b", "ab"를 포함한다.
- "a{3}b"는 "aaab"만 포함한다.
- "a{2,}b"는 "aab", "aaab", "aaaab"를 포함한다. "ab"는 포함되지 않는다.
- "a{1,3}b"는 "ab", "aab", "aaab"를 포함하지만, "b"나 "aaaab"는 포함하지 않는다.
자연수
^[1-9][0-9]*(\.[0-9]+)?$
실수
^[1-9][0-9]*(\.[0-9]+)?$
주민등록번호
[0-9]{6}-(1|2|3|4)[0-9]{6}
이메일주소
^[_a-zA-Z0-9]+([-+.][_a-zA-Z0-9]+)*@[_a-zA-Z0-9]+([-.][_a-zA-Z0-9]+)*\.[_a-zA-Z0-9]+([-.][_a-zA-Z0-9]+)*$
참고
-
http://regex101.com/ : 정규표현식을 영어로 번역(?) 해준다.
-
http://regexcrossword.com/ : 정규표현식 크로스워드 퍼즐
-
http://blog.outsider.ne.kr/360 : 정규식에 대한 영문블로그 포스팅 번역글
-
http://www.regexr.com/ 정규식을 온라인으로 테스트해볼 수 있는 싸이트