본문으로 바로가기
반응형

자바스크립트 및 c# 에서 정규식으로 이메일, 핸드폰번호, 전화번호 등을 체크하는 경우가 있다.


이번에는 개인정보보호때문에 기존에 있던 사용자 정보를 가려야 할 부분이 있어서 작업에 들어감.



static string ReplaceContent(string content)

        {

            // 핸드폰번호, 전화번호, 카드번호, 주민번호, 이메일

            // 핸드폰 01로 시작하며 010,011,016,017,018,019 일 경우와 7자리에서 8자리일 경우에 변환을 거치게

            content = Regex.Replace(content, @"01{1}[016789]{1}[0-9]{7,8}", "##########");

            // 이메일 - 다른곳에서 여러가지 조사를 하여 가지고 왔다. 이게 제일 잘 동작한다. 복잡도 *별 5개.

            content = Regex.Replace(content, @"[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?", (_middle) =>

            {

                return Regex.Replace(_middle.Value, @"[a-zA-Z0-9]", "*"); 

            });            

            

            // 이건 문자+숫자 4자리 이상일 경우 중간 2자리만 ** 처리하는 방법이다. {4,} 4자리 이상의 핵심

            content = Regex.Replace(content,@"[A-Za-z0-9]{4,}", (_middle) =>

            {

                return String.Format("{0}{1}{2}", _middle.Value.Substring(0, (_middle.Value.Length/2) - 1), "**", _middle.Value.Substring((_middle.Value.Length / 2)+1, (_middle.Value.Length - (_middle.Value.Length / 2) )-1 ));

            });

            return content;

        }


우선 나중에 쓸 일이 생길 것 같아서 정리해 두었다.  찾아둔 사이트들도 정리..

https://codereview.stackexchange.com/questions/119519/regex-to-first-match-then-replace-found-matches

https://stackoverflow.com/questions/5342375/regex-email-validation

http://www.csharpstudy.com/Practical/Prac-validemail.aspx

https://o7planning.org/en/10795/csharp-regular-expressions-tutorial




반응형