[펌] C#에서의 나라별 정규 표현식 구현
예전코드
string Pattern = @"^[a-zA-Z0-9가-힣ㄱ-ㅎㅏ-ㅣ]*$";
한글, 숫자, 영어는 커버가 가능했지만 대만에 퍼블리싱 되면서 대만어 입력을 할 경우 필터링 되어
문제가 되었는데 이와 같이 여러 언어로 서비스 하는 경우 각 국가 언어를 예전코드처럼 글자 자체를
입력하기에는 무리가 있다.
이런 경우 유니코드의 범위를 지정하여 필터링 할 수가 있는데 문제는 각 국가별 유니코드 범위를
알아야 한다는 것이었다. 아무리 구글신께 대만어 유니코드 범위를 알려달라 해봐도 그는 고개를
저을뿐..
검색을 이리저리 하다보니 CJK가 계속 눈에 띄어 위키느님께 여쭤보니
CJK(Chinese - Japanese - Korean, 중국·일본·한국)는 한국어, 중국어, 일본어를 통틀어 이르는 말로, 소프트웨어 국제화, 언어 지역화 분야에서 쓰인다. 베트남어를 포함해서 CJKV라고 하기도 한다.
으헉.. 한자는 중국과 대만이 다르고 또 한국과 일본이 다르건만 통합을 해놓았다...
내부적으로 어떤 경계가 있을법도 한데 어제 반나절을 투자해 검색해본 결과로는 없는것 같았다.
아마도 중복되는 한자들이 존재하니 통합하는길 밖에 없었던 것도 같다. 유니코드는 한 문자당 코드가
한개씩만 할당되어야 하므로.
알아낸 유니코드 범위들은 다음과 같다.
@"[\uFF21-\uFF3A]" // A-Z
@"[\uFF41-\uFF5A]" // a-z
@"[\uFF10-\uFF19]" // 0-9
@"[\uAC00-\uD7A3]" // 가-힣
@"[\u1100-\u1112]" // ㄱ-ㅎ
@"[\u3130-\u3163]" // ㄱ-ㅎ(Compatible)ㅏ-ㅣ
@"[\u4E00-\u9FFF]" // Unified Hanja (Traditional/Simplify Chinese, Japanese, Korean)
@"[\u3040-\u30FC]" // Japanese
실제 구현부에는 얘네들을 | 연산자로 국가별로 골라서 넣을 수 있도록 구현을 해놓았다.
아래 사이트에서 실제 어떤 아이들이 들어가 있는지 볼 수 있다.
http://en.wikibooks.org/wiki/Unicode/Character_reference/0000-0FFF
[출처] https://m.blog.naver.com/amurorei82/10189119746
'Programming > Regex' 카테고리의 다른 글
[링크] [스크랩] Regular Expression(정규표현식) 총정리 (0) | 2022.08.09 |
---|---|
[링크][Regex] 한국어, 일본어, 한자, 영어, 숫자 정규표현식 (2) | 2022.08.09 |
[펌][C#] 정규식 전자 메일 유효성 검사 (0) | 2018.09.18 |
[링크] 정규식 체크 사이트 (0) | 2017.12.05 |
[펌] C# - 정규식을 이용한 문자 변환 (0) | 2016.04.15 |