태그 보관물: regex

정규표현식- 숫자 검증

Question :

고객번호를 넣어서 검색하는 프로그램을 짜고 있는데
번호를 입력하는 칸에 이름, 영문과 같은 문자열이 입력됐을 때는
숫자를 입력해달라고 하는 에러메시지가 나오게 하고 싶습니다.
어떤 함수를 써야하나요? ㅠㅜ

 

Answer:

숫자만 검증하는 부분에서 유용하게 사용할 수 있는게 정규식입니다.
정규식은 대문자, 소문자, 숫자, 문자패턴등을 효율적으로 판별할 수 있도록 합니다.
질문자님의 의도대로 숫자가 아닌 문자가 입력되면 오류 메시지를 출력하는 부분은
정규식을 숫자로 검색해서 일치가 안되면 오류 메시지를 출력하면 됩니다.
1. Pattern pattern = Pattern.compile(“[\\d]*”); // 숫자만 포함하는 패턴
2. boolean match = pattern.matcher(str).matches(); // 일치하면 숫자 아니면 문자가 포함된 경우 입니다.

package naverkin;

 

import java.util.Scanner;

import java.util.regex.Pattern;

 

public class ValidateNumber {

    public static void main(String[] args) {

        // 간단하게 예를 들어 입력하는 하는 로직을 넣겠습니다.

        Scanner scanner = new Scanner(System.in);

        // 숫자를 구별하는 정규 표현식

        Pattern pattern = Pattern.compile("[\\d]*");

        while(true) {

            // 사원 번호를 입력받습니다.

            System.out.print("사원번호: ");

            String str = scanner.next();

            // 입력된 글자중 숫자가 아닌 글자가 있으면 false 가 리턴 됩니다.

            boolean match = pattern.matcher(str).matches();

            if(match) {

                System.out.println("올바른 사원 번호 입니다.");

                break;

            } else {

                System.out.println("잘못된 사원 번호 입니다. 다시 입력해주세요.");

            }

            

        }

    }

}

이 글은 java 카테고리에 분류되었고 태그가 있으며 님에 의해 에 작성되었습니다.

자바 정규 표현식

Construct
Matches

Characters

x
The character x

\\
The backslash character

n
The character with octal value 0n (0 <= n <= 7)

nn
The character with octal value 0nn (0 <= n <= 7)

mnn
The character with octal value 0mnn (0 <= m <= 3, 0 <= n <= 7)

\xhh
The character with hexadecimal value 0xhh

\uhhhh
The character with hexadecimal value 0xhhhh

\t
The tab character (‘\u0009’)

\n
The newline (line feed) character (‘\u000A’)

\r
The carriage-return character (‘\u000D’)

\f
The form-feed character (‘\u000C’)

\a
The alert (bell) character (‘\u0007’)

\e
The escape character (‘\u001B’)

\cx
The control character corresponding to x

Character classes

[abc]
a, b, or c (simple class)

[^abc]
Any character except a, b, or c (negation)

[a-zA-Z]
a through z or A through Z, inclusive (range)

[a-d[m-p]]
a through d, or m through p: [a-dm-p] (union)

[a-z&&[def]]
d, e, or f (intersection)

[a-z&&[^bc]]
a through z, except for b and c: [ad-z] (subtraction)

[a-z&&[^m-p]]
a through z, and not m through p: [a-lq-z](subtraction)

Predefined character classes

.
Any character (may or may not match line terminators)

\d
A digit: [0-9]

\D
A non-digit: [^0-9]

\s
A whitespace character: [ \t\n\x0B\f\r]

\S
A non-whitespace character: [^\s]

\w
A word character: [a-zA-Z_0-9]

\W
A non-word character: [^\w]

POSIX character classes (US-ASCII only)

\p{Lower}
A lower-case alphabetic character: [a-z]

\p{Upper}
An upper-case alphabetic character:[A-Z]

\p{ASCII}
All ASCII:[\x00-\x7F]

\p{Alpha}
An alphabetic character:[\p{Lower}\p{Upper}]

\p{Digit}
A decimal digit: [0-9]

\p{Alnum}
An alphanumeric character:[\p{Alpha}\p{Digit}]

\p{Punct}
Punctuation: One of !”#$%&'()*+,-./:;?@[\]^_`{|}~

\p{Graph}
A visible character: [\p{Alnum}\p{Punct}]

\p{Print}
A printable character: [\p{Graph}\x20]

\p{Blank}
A space or a tab: [ \t]

\p{Cntrl}
A control character: [\x00-\x1F\x7F]

\p{XDigit}
A hexadecimal digit: [0-9a-fA-F]

\p{Space}
A whitespace character: [ \t\n\x0B\f\r]

java.lang.Character classes (simple java character type)

\p{javaLowerCase}
Equivalent to java.lang.Character.isLowerCase()

\p{javaUpperCase}
Equivalent to java.lang.Character.isUpperCase()

\p{javaWhitespace}
Equivalent to java.lang.Character.isWhitespace()

\p{javaMirrored}
Equivalent to java.lang.Character.isMirrored()

Classes for Unicode blocks and categories

\p{InGreek}
A character in the Greek block (simple block)

\p{Lu}
An uppercase letter (simple category)

\p{Sc}
A currency symbol

\P{InGreek}
Any character except one in the Greek block (negation)

[\p{L}&&[^\p{Lu}]]
Any letter except an uppercase letter (subtraction)

Boundary matchers

^
The beginning of a line

$
The end of a line

\b
A word boundary

\B
A non-word boundary

\A
The beginning of the input

\G
The end of the previous match

\Z
The end of the input but for the final terminator, if any

\z
The end of the input

Greedy quantifiers

X?
X, once or not at all

X*
X, zero or more times

X+
X, one or more times

X{n}
X, exactly n times

X{n,}
X, at least n times

X{n,m}
X, at least n but not more than m times

Reluctant quantifiers

X??
X, once or not at all

X*?
X, zero or more times

X+?
X, one or more times

X{n}?
X, exactly n times

X{n,}?
X, at least n times

X{n,m}?
X, at least n but not more than m times

Possessive quantifiers

X?+
X, once or not at all

X*+
X, zero or more times

X++
X, one or more times

X{n}+
X, exactly n times

X{n,}+
X, at least n times

X{n,m}+
X, at least n but not more than m times

Logical operators

XY
X followed by Y

X|Y
Either X or Y

(X)
X, as a capturing group

Back references

\n
Whatever the nth capturing group matched

Quotation

\
Nothing, but quotes the following character

\Q
Nothing, but quotes all characters until \E

\E
Nothing, but ends quoting started by \Q

Special constructs (non-capturing)

(?:X)
X, as a non-capturing group

(?idmsux-idmsux)
Nothing, but turns match flags on – off

(?idmsux-idmsux:X)
X, as a non-capturing group with the given flags on – off

(?=X)
X, via zero-width positive lookahead

(?!X)
X, via zero-width negative lookahead

(?<=X)
X, via zero-width positive lookbehind

(?<!X)
X, via zero-width negative lookbehind

(?>X)
X, as an independent, non-capturing group

이 글은 java 카테고리에 분류되었고 태그가 있으며 님에 의해 에 작성되었습니다.