본문 바로가기
java

정규식 UnicodeBlock을 이용하여 입력 제한 처리

by 후린트 2020. 12. 16.
반응형

정규식 UnicodeBlock을 이용하여 입력을 제한할 수 있다.
docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html

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]

숫자만 입력 가능한 경우
[0-9] , [\\p{Digit}]

String regex = "[0-9]+";
boolean result = Pattern.matches(regex, "12345");
assertThat(result, equalTo(true));
result = Pattern.matches(regex, "12345A");
assertThat(result, equalTo(false));

regex = "[\\p{Digit}]+";
result = Pattern.matches(regex, "12345");
assertThat(result, equalTo(true));
result = Pattern.matches(regex, "12345A");
assertThat(result, equalTo(false));

 

 

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

위 처럼 UnicodeBlock 을 이용할 수 있다.

아래 두개의 정규식은 동일하게 동작한다. 
regex = "[가-힣]+";
regex = "[\\p{InHANGUL_SYLLABLES}]+";

String reg1 = "[가-힣]+";
String reg2 = "[\\p{InHANGUL_SYLLABLES}]+";

String passStr = "가나다";
String errorStr = "ㄱ가나다";


assertThat(Pattern.matches(reg1, passStr), equalTo(true));
assertThat(Pattern.matches(reg2, passStr), equalTo(true));

assertThat(Pattern.matches(reg1, errorStr), equalTo(false));
assertThat(Pattern.matches(reg2, errorStr), equalTo(false));


UnicodeBlock에 들어가는 문자는 아래 URL에서 확인이 가능하다.
www.unicode.org/charts/

 


영어,숫자,한국어(자음모음 제외),태국어, 중국어를 허용하는 정규식

regex="[\\p{Alpha}\\p{Digit}\\p{InHANGUL_SYLLABLES}\\p{InThai}\\p{InCJK_UNIFIED_IDEOGRAPHS}\\p{InCJK_COMPATIBILITY_IDEOGRAPHS}]"

 

 

 

 

 

반응형

'java' 카테고리의 다른 글

springboot common properties  (0) 2022.05.03
bootJar task에 css, javascript minified 적용  (2) 2022.03.24
Unicode String escape unescape  (0) 2020.12.07
톰캣 jsp 빈줄 제거  (0) 2020.11.25
redirect http to https (response.sendRedirect)  (0) 2020.11.25