프로젝트를 하다가 xml 파일이 아닌 String 값으로 되어진 xml 태그 파일을 처리 해야 하는 일이 생겼다.
xml이라면 파싱해서 쓰면 될 것인데 String으로 담겨 있어서 난감한 상황이었다.
인터넷에 구글링 한 결과 해결 방안을 찾게 되었다.
StringBuffer sb = new StringBuffer();
//StringBuffer 만들어서 사용 할 것이기에 StringBuffer 선언
sb.append("XML 형식으로 되어진 String 파일");
//선언한 StringBuffer안에 xml 형식 String 파일을 삽입
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//Document로 파싱 하여 사용 할 것이기에 DocumentBuilderFactory 선언
DocumentBuilder builder = factory.newDocumentBuilder();
//DocumentBuilderFactory로 DocumentBuilder
Document document = builder.parse(new InputSource(new StringReader(sb.toString())));
//sb.toString을 Document 형식으로 저장
NodeList taglist = document.getElementsByTagName("Tag네임");
//document 안에서 찾고자 하는 태그값을 가져 와서 NodeList로 저장
Node tagtext = taglist.item(0).getChildNodes().item(0);
//NodeList는 List 형태 이기에 Node로 변환 하여 저장
String Tag =tagtext.getNodeValue();
// tagtext에 있는 값은 Node로 선언 되어 있어서 getNodeValue()로 String으로 변환 하여 저장
프로젝트를 하던 중 비밀번호 대소문자 , 특수문자 , 숫자, 길이를 체크 해야 하는 로직이 필요 했다.
검색을 하던 중 다들 현란한 기술로 정규식을 짜서 사용 하였는데
실제로 짜여진 코드들을 보면 특수 문자의 갯수나 대문자나 숫자의 길이를 재는 로직은 없었다.
그래서 고민 끝에 새로 짜기로 마음을 먹고 새로 코드를 짜게 되었다.
일단 변수들을 선언 하였다.
var pattern1 = /[0-9]/; // 숫자 정규식
var pattern2 = /[a-z]/; // 소뮨자 정규식
var pattern3 = /[~!@#$%^&*()_+|<>?:{}]/; // 특수문자 정규식
var pattern4 = /[A-Z]/; // 대문자 정규식
var str = $("#passwordinput아이디").val();
var pattern1length=0; // 숫자 정규식의 길이를 재기 위해 선언
var pattern2length=0; // 소문자 정규식의 길이를 재기 위해 선언
var pattern3length=0; // 특수문자 정규식의 길이를 재기 위해 선언
var pattern4length=0; // 대문자 정규식의 길이를 재기 위해 선언
var strlist = str.split(""); // 문자들의 길이를 재기 위해서 input value를 split으로 배열에 담음
var PS_min_length ="${DB안에서가져온데이터}"; // DB에서 최소 길이 값을 가져와서 변수에 저장
var PS_special_char ="${DB안에서가져온데이터 }"; // DB에서 특수문자 길이 값을 가져와서 변수에 저장
var PS_upppercase ="${DB안에서가져온데이터 }"; // DB에서 대문자 길이 값을 가져와서 변수에 저장
var PS_lowercase = "${DB안에서가져온데이터 }"; // DB에서 소문자 길이 값을 가져와서 변수에 저장
var PS_digit="${DB안에서가져온데이터 }"; // DB에서 숫자 길이 값을 가져와서 변수에 저장
기본 적으로 받아야 하는 것들과 비교해야 할 값들이 많아서 다 선언 해 주 었습니다.
선언 한 변수들을 조건문과 반복문을 이용 해서 비교할 예정 입니다.
$("#비밀번호입력input아이디").change(function(){ //input 박스를 벗어 나게 되면 발생 하게 만들었습니다.
if(!pattern1.test(str) || !pattern2.test(str) || !pattern3.test(str) || str.length < 4 ) // 기본적으로 특수 문자 , 숫자 , 문자와 텍스트의 길이를 측정합니다.
{
for (var i = 0; i < strlist.length; i++) { //배열에 담긴 값을
if( pattern1.test(strlist[i])==true) // 숫자 개수 카운팅
{
pattern1length =pattern1length+1; //true면 카운팅
}
else if( pattern2.test(strlist[i])==true) //소문자 카운팅
{
pattern2length =pattern2length+1;//true면 카운팅
}
else if( pattern3.test(strlist[i])==true) //대문자 카운팅
{
pattern3length =pattern3length+1;
}
else if( pattern4.test(strlist[i])==true) //숫자 카운팅
{
pattern4length =pattern4length+1;//true면 카운팅
}
}
if(PS_min_length < str.length || PS_special_char < pattern3length || PS_upppercase < pattern4length || PS_lowercase < pattern2length || PS_digit < pattern1length)
{
alert("비밀번호는 4자리 이상 문자, 숫자, 특수문자로 구성하여야 합니다.");
}
return false;
}
else
{
return true;
}
});
$("#패스워드비교 input 아이디").change(function(){
if($("#패스워드 아이디").val()!=$("패스워드비교 input 아이디").val()){
alert("비밀 번호가 다릅니다.");
$("#패스워드비교 input 아이디").val(''); //패스워드가 다를 경우 비교할 input 값 비우기
$("#패스워드비교 input 아이디").focus(); // 커서 이동
}
});