게임이나 웹 개발에서 로그인을 구현 하는 경우 닉네임 필터링을 해야 하는 상황이 발생한다.
C# regex를 사용해서 필터링할 대상을 정규식을 작성해서 공백("")으로 대치해 주면, 원문과 비교 했을때 필터링 대상이 있다면 원문과 일치하지 않아 비속어 필터링을 할 수 있다.
private int min;
private int max;
private string nickName;
/// <summary>
/// 문자 필터링 함수
/// </summary>
public void CheckNickName()
{
//인풋 데이터 필터링
//필터링 대상
//인풋 길이가 2자 미만인 경우
//단어문자가 아닌 문자 (특수문자) : \W == ^\w
//한글 알파벳 : ㄱ-ㅎ
//한글 전체 : 가 -힣
//언더바 : _
//한글 비속어 정규식 : [시씨슈쓔쉬쉽쒸쓉]([0-9]*|[0-9]+ *)[바발벌빠빡빨뻘파팔펄]|[섊좆좇졷좄좃좉졽썅춍]|ㅅㅣㅂㅏㄹ?|ㅂ[0-9]*ㅅ|[ㅄᄲᇪᄺᄡᄣᄦᇠ]|[ㅅㅆᄴ][0-9]*[ㄲㅅㅆᄴㅂ]|[존좉좇][0-9 ]*나|[자보][0-9]+지|보빨|[봊봋봇봈볻봁봍] *[빨이]|[후훚훐훛훋훗훘훟훝훑][장앙]|후빨|[엠앰]창|애[미비]|애자|[^탐]색기|([샊샛세쉐쉑쉨쉒객갞갟갯갰갴겍겎겏겤곅곆곇곗곘곜걕걖걗걧걨걬] *[끼키퀴])|새 *[키퀴]|[병븅]신|미친[가-닣닥-힣]|[믿밑]힌|[염옘]병|[샊샛샜샠섹섺셋셌셐셱솃솄솈섁섂섓섔섘]기|[섹섺섻쎅쎆쎇쎽쎾쎿섁섂섃썍썎썏][스쓰]|지랄|니[애에]미|갈[0-9]*보[^가-힣]|[뻐뻑뻒뻙뻨][0-9]*[뀨큐킹낑)|꼬추|곧휴|[가-힣]슬아치|자박꼼|[병븅]딱|빨통|[사싸](이코|가지|까시)|육시[랄럴]|육실[알얼할헐]|즐[^가-힣]|찌(질이|랭이)|찐따|찐찌버거|창[녀놈]|[가-힣]{2,}충[^가-힣]|[가-힣]{2,}츙|부녀자|화냥년|환[양향]년|호[구모]|조[선센][징]|조센|[쪼쪽쪾]([발빨]이|[바빠]리)|盧|무현|찌끄[레래]기|(하악){2,}|하[앍앜]|[낭당랑앙항남담람암함][ ]?[가-힣]+[띠찌]|느[금급]마|文在|在寅|(?<=[^\n])[家哥]|속냐|[tT]l[qQ]kf|Wls
if (nickName.Length < min || nickName.Length > max)
{
UnityEngine.Debug.Log($"{min} ~ {max}글자까지 입력 가능합니다.");
return;
}
var Check = Regex.Replace(input.text, @"[\Wㄱ-ㅎ가-힣_]", "", RegexOptions.Singleline);
//필터링된 데이터와 인풋데이터 불일치
if (input.text.Equals(Check) == false)
{
UnityEngine.Debug.Log($"이 닉네임은 사용할 수 없습니다.");
return;
}
//데이터 일치
else
{
//todo nicknameChange Function
}
}
'Code > Unity' 카테고리의 다른 글
[Editor tools] Png to SpriteAtlasGenerator (0) | 2025.01.21 |
---|---|
Unity Web socket (1) | 2024.12.18 |