개발을 하다보면 개인정보 보호를 위해서 어떠한 값에 마스킹을 하는 경우가 필요합니다.
그럴 경우 정규식을 이용하여 마스킹이 가능합니다.
[ Java ]
String name ="java";
name = name.replaceAll("(?(<=.{1}).","*");
==> 결과 : j***
[ JavaScript ]
var name = '홍길동';
var phone = '01012345678';
var address = '서울시 강남구 테헤란로';
var result = '';
//맨앞글자 빼고 마스킹
result = name.replace(/(?<=.{1})./gi,"*");
===> 결과 : 홍**
// /gi앞에 .을 뺐을 경우
result = name.replace(/(?<=.{1})/gi,"*");
===> 결과 : 홍*길*동*
area6.innerHTML +="정규식 : " + result + "<br>";
// 두번째 글자 마스킹
result = name.replace(/(?<=.{1})./,"*");
===> 결과 : 홍*동
// 뒤에 4자리 빼고 마스킹(replace)
result = phone.replace(/\d(?=\d{4})/gi,"*");
===> 결과 : *******5678
// 뒤에 4자리 빼고 마스킹(repeat)
result = "*".repeat(phone.length -4) + phone.slice(-4);
===> 결과 : *******5678
// 앞글자 3자리 빼고 마스킹
result = phone.replace(/(?<=.{3})./gi,"*");
===> 결과 : 010********
// for문으로 마스킹
var len = name.length;
var name_for = name[0];
for(var i = 1; i<len; i++){
name_for += '*';
}
===> 결과 : 홍**
//공백 뒤 모두제거
result = address.replace(/\s.*/gi,"");
===> 결과 : 서울특별시
[ 정규 표현식 ]
/ = 시작과 끝을 의미한다.
< 플래그 문자 > -> /~~/다음에 있는 내용들
플래그 문자는 정규표현식 뒤에 표현 ex. var regExp = /a/gi;
- g : 대상 문자열 내에 모든 패턴들을 검색하는 것(전체를 비교함)
- i : 대소문자를 가리지 않고 비교
- m : 여러줄의 검사 수행
< 앵커문자 >
문자열의 앞과 뒤를 구분해주는 정규표현식 기호
- ^ : 시작하는 단어
- $ : 단어의 끝부분
- ? : 존재 여부를 표현, 문자가 존재할 수도 존재하지 않을 수 있음을 의미
< 메타문자 >
자바스크립트 정규표현식 객체가 갖는 유용한 기능
- / [ ] / - []안에 있는 모든문자
ex) /[a-z]/g ==> 소문자 영어를 찾음
/[0-9]/g ==> 숫자를 찾음
- / [^ ] / - ^은 부정의 의미로 []안에 있는 내용빼고 모두
- \d : 숫자
/[0-9]/g 랑 같은 의미
- \w : 아무 단어(숫자포함)
- \s : 공백문자(탭, 띄어쓰기, 줄바꿈)
- \D : 숫자가 아닌 것
- \W : 단어가 아닌 것
- \S : 공백문자가 아닌 것
< 수량문자 > a부분에 메타문자가 들어가도 가능하다.
- a+ : a가 적어도 1개 이상
- a* : a가 0개 또는 여러개
- a? : a가 0개 또는 1개
- a{5} : a가 5개(5번째에 있는 부분)
- a{2,5} : a가 2~5개
- a{2, } : a가 2개 이상
- a{ ,2} : a가 2개 이하
[ replace() 메서드 ]
- 어떤 패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열을 반환한다.
- var newStr = str.replace( 정규식 or String값, 교체할 문자 or문자열); => js
- String newStr = str.replace( 찾을 문자 or 문자열, 교체할 문자 or문자열); => java
[ repeat() 메서드 ]
- 문자열을 주어진 횟수만큼 반복해 붙인 새로운 문자열을 반환한다.
- str.repeat(count); //음수는 에러
ex ) 'abc'.repeat(2); ==> abcabc
'abc'.repeat(1.5) ==> abc //소수를 넣을 경우는 내림해서 정수값을 넣음,
'abc'.repeat(1/0) ==> error
[ replaceAll() 메서드 - js에서는 사용X ]
- 문자열에서 특정 문자를 다른문자로 전체 치환하는 메소드
- java에서는 정규식으로 문자열을 치환하고 싶으면 replaceAll()메서드를 사용해야한다.
- 정규식이 아닌 문자를 입력하였을때에는 replace()메소드와 같은 기능을 가지고 있는다.
- String newStr = str.replace( 찾을 문자열 or 정규식, 교체할 문자 or문자열); => java
//java
// replaceAll() 과 replace의 차이점
// 점(.)은 정규식으로 모든 문자를 표현한다.
String str = "안녕하세요. 테스트입니다.";
str = str.replace(".", "^^");
System.out.println(str); // 결과 : 안녕하세요^^ 테스트입니다^^
String str2 = "안녕하세요. 테스트입니다.";
str2 = str2.replaceAll(".", "^^");
System.out.println(str2); // 결과 : ^^^^^^^^^^^^^^^^^^^^^^^^^^
'Spring > JavaScript+Jsp(HTMl)' 카테고리의 다른 글
[ JS ] strict mode(use strict) 엄격모드 (0) | 2022.03.16 |
---|---|
[ js ] 하루동안 이 창을 열지 않음(하루 그만보기) 기능 구현_팝업,레이어팝업 (2) | 2022.03.13 |
[ javascript(js) ] Object 타입에서 특정 값(value)이 있는지 찾기 (0) | 2022.03.11 |
[ javascript ] div 요소에 onload 이벤트를 추가하는 방법 (0) | 2022.03.10 |
[ jsp ] 줄바꿈(개행) 처리하기 (0) | 2022.03.09 |
댓글