정규식이란?
입력된 데이터의 패턴이 내가 원하는 패턴인지 검증하는데 사용한다.
예를 들어 입력값이 다 숫자로 되어 있는지… 알파벳으로 되어 있는지 등을 검사하는데 사용한다.
정규식 기초
^ : 문자열의 시작 $ : 문자열의 끝 [] : 문자열 셋, []안에서 ^쓰면 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+\/>)$
웹페이지 긁어올때 유용하다.
Be First to Comment