자바스크립트 및 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
'프로그램&코딩 > Coding' 카테고리의 다른 글
SQL(MSSQL) like 검색 array parameter 처리 (0) | 2021.10.26 |
---|---|
HttpWebRequest , HttpClient 방식 GET, POST, PUT 등 테스트 (0) | 2020.05.26 |
MSSQL 테이블을 배열로 반환하기 (0) | 2019.06.24 |
C# 에서 영문, 숫자를 # 변환(치환)하기 ( # 으로 변경하기 ) (0) | 2018.11.23 |
OnSelectedIndexChanged 인 경우에도 응답이 없을 경우.. (0) | 2017.09.13 |
WCF 서비스 제공시 JAVA 의 경우 데이터 타입 문제(Using different data types between Java and WCF) (0) | 2017.08.29 |