Press "Enter" to skip to content

[태그:] regular

유용한 정규식

정규식이란?
입력된 데이터의 패턴이 내가 원하는 패턴인지 검증하는데 사용한다.
예를 들어 입력값이 다 숫자로 되어 있는지… 알파벳으로 되어 있는지 등을 검사하는데 사용한다.

정규식 기초

^ : 문자열의 시작
$ : 문자열의 끝
[] : 문자열 셋, []안에서 ^쓰면 NOT을 의미함 
     ex) [ab][a-z][0-9] 라고 입력하면 첫글자는 a또는 b이고 그 다음에 a~z가 나오고 그 뒤에 0~9
       
* : 0번 이상 발생
+ : 1번 이상 발생
? : 0번 또는 1번 발생
{} : 횟수 표시
    [A]{3}이면 AAA이고 [a]{3,}이면 a가 3개 이상, [A]{2, 4}이면 A가 2개 이상, 4개 이하(AA, AAA, AAAA) 이다.
\d : 숫자, [0-9]와 동일
\D : 숫자가 아닌 것들 [^0-9]와 동일
| : OR의 의미
{} : 그룹화 한다.
. : \n 이외 모든 종류의 한 문자
\. : . 문자 
# : 숫자의 부호( + 혹은 - )

정규식 시험 사이트
https://regexr.com/
https://rubular.com/
http://www.regexplanet.com/advanced/java/index.html
https://regexper.com/
http://txt2re.com/index.php3

프로그래밍 하다가 일일이 해볼려면 수명이 단축된다.
이 사이트들에서 한번 해보고 프로그래밍에 적용하자!

정규식 예제

영문/숫자로 시작하고, 3~10자릿수 문자열

^[0-9a-zA-Z]{3,10}$ 

^ : 시작문자
[0-9a-zA-Z] : 숫자와 영문
{3,10} : 3~10자릿수
$ : 끝까지  
16진수 문자열

^[+-]?([a-f0-9]{6})$

^ : 시작문자
# : 부호문자
[+-] : + 혹은 -
? : 0개 혹은 1개. 여기서는 + 혹은 -의 부호문자가 +일 경우 생략될 수 있음.
([a-f0-9]{6}) : 0~9, a~f까지의 문자 6자리
$ : 끝까지
이메일 주소 

^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$ 

^([a-z0-9_\.-]+): 알파벳, 숫자, _, ., - 로 시작하는 1개 이상의 문자(이메일 주소의 ID에 해당함)
@: 골뱅이????
([\da-z\.-]+): 알파벳, 숫자, ., - 로 구성된 1개 이상의 문자(도메인)
\.: 그냥 .(쩜)
([a-z\.]{2,6}): 알파벳. 이 2개 이상 6개 이하인 문자열
$: 끝까지

아... 이건 복잡하다. 그냥 복사해서 쓰자
URL

 ^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w_\.-]*)*\/?$ 

이것도 그냥 복사해서 쓰자. 복잡하다.
IP 주소

 ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ 

아놔... 길다. 복잡한건 걍 복사해서 쓰기!!
HTML 태그

 ^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$ 

웹페이지 긁어올때 유용하다.