일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 자바스크립트
- Eclipse
- 설정
- 스프링
- html
- 자바
- 설치
- 면접
- springboot
- 깃허브 간단요약
- 버튼
- jquery
- 이클립스
- jsp 내부객체
- 오라클
- 마이바티스
- 알고리즘
- 제이쿼리
- 셋업
- 필터체인
- jsp
- jstl
- Oracle
- java
- Spring
- MySQL
- 깃허브
- SESSION
- EL태그
- 폼태그
- Today
- Total
은은하게 코드 뿌시기
자바 JAVA 정규표현식 본문
* 숫자만 허용
import java.util.Scanner;
import java.util.regex.Matcher; // 정규표현식을 위해 import
import java.util.regex.Pattern; // 정규표현식을 위해 import
public class OnlyInteger {
public static void main(String[] args) {
//숫자를 허용하는 패턴
Pattern p = Pattern.compile("(^[0-9]*$)");
int onlyNum;
String inputVal;
Scanner iStream = new Scanner(System.in);
inputVal = iStream.nextLine();
Matcher m = p.matcher(inputVal); //선언한 패턴 p에 맞는 조건인지
if(m.find()) // m.find() 패턴이 일치하는 경우 true리턴
{
onlyNum = Integer.parseInt(inputVal);
System.out.println(onlyNum);
}
else
{
System.out.println("숫자가 아닌데..?");
}
}
}
pattern : "^[0-9]*$"
^ 으로 우선 패턴의 시작을 알립니다.
[0-9] 괄호사이에 두 숫자를 넣어 범위를 지정해줄 수 있습니다. * 를 넣으면 글자 수를 상관하지 않고 검사합니다. $ 으로 패턴의 종료를 알립니다.
[자주 쓰이는 패턴1]
1) 숫자만 : ^[0-9]*$
2) 영문자만 : ^[a-zA-Z]*$
3) 한글만 : ^[가-힣]*$
4) 영어 & 숫자만 : ^[a-zA-Z0-9]*$
5) E-Mail : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$
6) 휴대폰 : ^01(?:0|1|[6-9]) - (?:\d{3}|\d{4}) - \d{4}$
7) 일반전화 : ^\d{2.3} - \d{3,4} - \d{4}$
8) 주민등록번호 : \d{6} \- [1-4]\d{6}
9) IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})
10)양의정수 : ^\d+$
11)음의정수 : ^-\d+$
12)정수: ^-?\d+$
13)양수 : ^\d*\.?\d+$
14)양수 또는 음수 : ^-?\d*\.{0,1}\d+$ 또는
(^-?0\.[0-9]*[1-9]+[0-9]*$)|(^-?[1-9]+[0-9]*((\.[0-9]*[1-9]+[0-9]*$)|(\.[0-9]+)))|(^-?[1-9]+[0-9]*$)|(^0$){1}
15)전화번호: ^\+?[\d\s]{3,}$
16)코드가있는전화 : ^\+?[\d\s]+\(?[\d\s]{10,}$
17)1900-2099년: ^(19|20)[\d]{2,2}$
18)날짜 (dd mm yyyy, d / m / yyyy 등) : ^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$
19)ipv4 : ^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$
* 파일확장자
String pattern = "^\\S+.(?i)(txt|pdf|hwp|xls)$";
String input = "abc.txt";
boolean i = Pattern.matches(pattern, input);
if(i==true)
{
System.out.println(input+"는 패턴에 일치함.");
}
else
{
System.out.println("패턴 일치하지 않음.");
}
패턴분석
^\\S+.(?i)(txt|pdf|hwp|xls)$
^ : 시작
\ : \ 가 왔기 때문에 다음에 올 문자는 특수문자로 취급하고 , \다음 특수문자고 오면 그 자체로 취급. \S : 공백 아닌 문자
+. : .이 반드시 한개는 와야한다.
(?i) : 대소문자 구별하지 않음.
(txt|pdf|hwp|xls) : txt 혹은 pdf 혹은 hwp 혹은 xls 만 허용. | 을 이용한 or 연산!
$ : 끝
-> 공백아닌 문자와 .이 반드시 와야하고 뒤에는 txt, pdf, hwp, xls 만 허용.
*패턴을 계속 만들어내는 것은 자원낭비가 심하다
그러므로 static으로 한번만 만들게 해놓고 재활용해 사용한다.
private static final Pattern GET_NUMBER = Pattern.compile("[0-9]+");
private static final Pattern IS_ONLY_NUMBER = Pattern.compile("^[0-9]*?");
public boolean isOnlyNumber(final String str) {
return IS_ONLY_NUMBER.matcher(str).matches();
}
참고링크
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions
정규 표현식 - JavaScript | MDN
정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다. JavaScript에서는 정규 표현식도 객체로서, RegExp의 exec()와 test() 메서드를 사용할 수 있습니다. String의 match(), matchA
developer.mozilla.org
'자바 > 자바 기본' 카테고리의 다른 글
JAVA 자바 향상된 for문 (0) | 2022.06.15 |
---|---|
자바 JAVA 접근제어자 (0) | 2022.06.15 |
자바 JAVA 파일 읽기/쓰기 FileReader, BufferedReader, FileWriter (0) | 2022.06.15 |
자바 JAVA CMD 커맨드라인 컴파일 실행하기 /JAVA -VERSION 안될때 (0) | 2022.06.14 |
자바 String비교 시 equals함수 (0) | 2022.06.14 |