정규식을 사용해서 문자열에 숫자가 포함되어있는지 여부를 체크하는 방법입니다.
정규식 숫자 포함 여부 체크 방법
정규식으로 숫자가 포함되어있는지 체크하려면 다음과 같은 패턴을 사용하면 됩니다.
\d: 숫자(digit)를 의미하는 정규식 패턴입니다. [0-9]와 동일한 의미를 갖습니다.
\d+: 하나 이상의 숫자를 의미합니다.
자바에서 정규식을 사용하여 문자열에 숫자가 포함되어있는지 확인하는 코드입니다.
String containNumberRegex = ".*\\d.*";
String containNumberString = "aaaaaa123aaaaaa";
String notContainNumberString = "aaaaaaaaaaaa";
System.out.println("containNumberString.matches(containNumberRegex) = " + containNumberString.matches(containNumberRegex));
System.out.println("notContainNumberString.matches(containNumberRegex) = " + notContainNumberString.matches(containNumberRegex));
Java String 클래스의 matches 메소드를 사용해서 문자열에 숫자가 포함되어있는지 체크하는 예제입니다.
각 정규식의 의미는 다음과 같습니다.
각 정규식의 의미
숫자 포함 여부 체크에 사용된 정규식 .*\d.*의 의미는 다음과 같습니다.
.*
.은 임의의 문자 하나를 의미합니다.
임의의 문자란 줄바꿈 문자를 제외한 모든 문자를 의미합니다.
*은 바로 앞의 문자가 0회 이상 반복됨을 의미합니다.
그래서 .*은 임의의 문자가 0회 이상 반복되는 패턴입니다.
뒤에도 동일한 패턴이 존재합니다.
뒤쪽에 있는 .*의 의미는 문자열의 끝까지 임의의 문자가 0회 이상 반복된다는 의미입니다.
다르게 말하면, 문자열의 끝까지 어떤 문자든 있을 수 있고, 없을 수 있다는 의미입니다.
\d
\d는 0부터 9까지의 숫자 하나를 의미합니다.
자바에서 \d를 사용하려면 이스케이프 처리를 해야합니다.
그래서 예제 코드에서는 \\d를 사용하였습니다.
.*\d.*의 의미
위에서 설명한 내용을 종합하면 다음과 같습니다.
1. 문자열의 시작부터 임의의 문자가 0개 이상 올 수 있고
2. 그 다음에 숫자 하나가 반드시 존재하며
3. 문자열의 끝까지 임의의 문자가 0개 이상 올 수 있습니다.
그래서 종합하면, .*\d.*의 의미는 주어진 문자열에서 숫자가 하나라도 포함되어있는지를 확인하는 정규식입니다.
읽으면 좋은 글
[Java] String - matches : 정규식 일치 여부