자바 프로 그래 밍 에서 정규 표현 식 사용 하기

5361 단어
프로그램 설계 과정 에서 입력 한 데이터 형식 을 자주 검사 해 야 합 니 다. 이 때 는 정규 표현 식 을 사용 합 니 다. 정규 표현 식 과 일치 하면 데이터 형식 이 정확 합 니 다. 그렇지 않 으 면 형식 이 잘못 되 었 습 니 다.입력 한 데이터 가 어떤 형식 에 만족 하 는 지 확인 하기 위해 String 류 의 matches () 방법 으로 판단 할 수 있 습 니 다. 문법 형식 은 다음 과 같 습 니 다.

boolean matches(String regex)


regex: 지정 한 정규 표현 식 입 니 다.반환 값: boolean 형식 을 되 돌려 줍 니 다.이 방법 은 현재 문자열 이 매개 변수 regex 가 지정 한 정규 표현 식 과 일치 하 는 지 알려 주 는 데 사 용 됩 니 다. 반환 값 은 boolean 형식 입 니 다. 현재 문자열 이 정규 표현 식 과 일치 하면 이 방법 은 true 로 돌아 갑 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다.
정규 표현 식 은 특수 한 의 미 를 가 진 문자 로 구 성 된 문자열 입 니 다. 이 특수 한 의 미 를 가 진 문 자 를 원 문자 라 고 합 니 다. 다음은 정규 표현 식 의 일부 원 문 자 를 보 여 줍 니 다. 정규 표현 식 의 쓰기 에 서 는 다음 원 문자 앞 에 '\' 기 호 를 추가 하여 번역 해 야 합 니 다. 예 를 들 어 원 문자 '\ d' 는 정규 표현 식 의 쓰기 에 '\ d' 입 니 다.그러나 '...' 에 대해 번역 한 후에 임의의 문 자 를 대표 하 는 것 이 아니 라 구체 적 인 문장 을 나타 낸다.
.: 임의의 문 자 를 대표 합 니 다. \d: 0 ~ 9 를 나타 내 는 모든 숫자 입 니 다. \D: 모든 비 숫자 문 자 를 대표 합 니 다. \s: 공백 문 자 를 의미 합 니 다. \S: 비 공백 문 자 를 의미 합 니 다. \w: 식별 자로 사용 할 수 있 는 문 자 를 대표 하지만 "$" 는 포함 되 지 않 습 니 다. \W: 식별 자로 사용 할 수 없 는 문 자 를 의미 합 니 다. \p {Lower}: 소문 자 a ~ z 를 대표 합 니 다. \ \p {Upper}: 대문자 A ~ A 를 대표 합 니 다. \ \p {ASCII}: ASCII 문자 입 니 다. \p {알파}: 알파벳 문자. \p {Digit}: 10 진수, 0 ~ 9. \p {Alnum}: 숫자 나 알파벳 문자 입 니 다. \p {Punct}: 문장 부호. \p {Graph}: 보 이 는 문자 입 니 다. \p {Print}: 문 자 를 인쇄 할 수 있 습 니 다. \p {Blank}: 공백 또는 탭 문자 입 니 다. \p {Cntrl}: 제어 문자 입 니 다.
정규 표현 식 을 사용 할 때 특정한 유형의 메타 문 자 를 여러 번 출력 해 야 한다 면 한 번 씩 입력 하 는 것 이 상당히 번 거 로 울 것 입 니 다. 이 때 정규 표현 식 의 한정 문 자 를 사용 하여 횟수 를 반복 할 수 있 습 니 다. 다음은 자주 사용 하 는 한정 문자 와 그 의 미 를 보 여 줍 니 다.
?:0 회 혹은 1 회.0 회 혹은 여러 번. +:0 회 혹은 1 회.{n}: n 회 반복.{n,}: 적어도 n 번 반복 합 니 다.{n, m}: n ~ m 회 반복 합 니 다.
정규 표현 식 에 서 는 여러 문 자 를 괄호 로 묶 을 수 있 습 니 다. 괄호 에 있 는 각종 정규 표현 식 은 서로 다른 의 미 를 대표 합 니 다. 다음은 괄호 에 있 는 메타 문자 와 그 의 미 를 보 여 줍 니 다.
[abc]: a, b 또는 c 를 나타 낸다.[^ abc]: a, b, c 이외 의 모든 문 자 를 표시 합 니 다.[a - zA - Z]: a ~ z 또는 A ~ Z 의 모든 문자.[a - d [m - p]: a ~ d 또는 m ~ p 의 모든 문자.[a - z & [def]: d, e 또는 f.[a - z & & [^ bc]]: a ~ z 사이 에는 b 와 c 의 모든 문자 가 포함 되 어 있 지 않 습 니 다.[a - z & & [^ m - p]: a ~ z 사이 에는 m ~ p 의 모든 문자 가 포함 되 어 있 지 않 습 니 다.
용법 예시: 1. 차 번호:

/**

* 

* @description:     

* @param carNum

*       A106EK

* @return   :true    :false

*/

public static boolean validateCarNum(String carNum) {

boolean result = false;

String[] provence = new String[] { " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",

" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " };

String reg = "[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}";

boolean firstChar = false;

if (carNum.length() > 0) {

firstChar = Arrays.asList(provence).contains(carNum.substring(0, 1));

}

try {

Pattern p = Pattern.compile(reg);

Matcher m = p.matcher(carNum);

if (m.matches() && firstChar) {

result = true;

} else {

result = false;

}

} catch (Exception e) {

e.printStackTrace();

}

return result;

}


2. 핸드폰 번호:

/**

* 

* @description:      

* @param mobileNum 15516985859

* @return   :true    :false

*/

public static boolean isMobileNum(String mobileNum) {

boolean result = false;

try {

Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");

Matcher m = p.matcher(mobileNum);

result = m.matches();

} catch (Exception e) {

e.printStackTrace();

}

return result;

}


핸드폰 번호 + 고정 전화: 010 - 111111, 155169858559, 0377 - 111111

//java         (  、      )

String legalPhone = "";
String regExp ="^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}|[0]{1}[0-9]{2,3}-[0-9]{7,8}$";
Pattern p = Pattern.compile(regExp);
Matcher m = p.matcher(importPotentialBFOs[i].getLegalPhone());
if(m.find()){ //  :m.find     ,        false
 legalPhone = importPotentialBFOs[i].getLegalPhone();
 uploadTmp.setLegalTelephone(legalPhone);

}else{
 throw new BizException("        !");
}


3. 실수:

String[] arrs=new String[]{"a","1.123","-1.23","0","+111"};

      String regex="-?\\d+\\.?\\d*";

      Pattern p = Pattern.compile(regex);

      for (int i = 0; i < arrs.length; i++) {

       Matcher m = p.matcher(arrs[i]);

       System.out.println(arrs[i]+":"+m.matches());

 }


인쇄:
a:false
1.123:true
-1.23:true
0:true
+111:false

좋은 웹페이지 즐겨찾기