평소 반복문을 이용해서 인덱스 변수를 이용해 하나하나 검사해줬던 방식만 사용 하였다
그런데 indexof 방식이 속도가 빠르다고 하여서 권장한다고 하여 연습 해볼겸 사용해보았다.
indexof의 주의 할 점이 있는데
포지션을 제대로 지정해주지 않으면 계속 처음부터 검사를 하게 된다는 점이다.
따라서
1. 포지션을 고려하지 않고 문자열을 잘르는 방식
또는
2. indexof 의 첫 포지션을 지정해 주는 방식
으로 해야한다.
먼저 어려운 1번 방법으로 먼저 해보자
1) 포지션을 고려하지 않고 문자열을 잘르는 방식.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | /** * */ //<![CDATA[ var userEmail = prompt("당신의 이메일 주소는?", ""); var copyEmail = userEmail; var arrUrl = [ ".co.kr", ".com", ".net", ".or.kr", "go.kr" ]; var check1 = false; var check2 = false; var count = 0; var pos=-1; if (userEmail.indexOf("@") != 0) { while (true) { if ((pos = userEmail.indexOf("@")) > -1) { count++; userEmail = userEmail.slice(pos + 1); } else break; } if (count == 1) { check1 = true; } } for (var i = 0; i < arrUrl.length; i++) { if (userEmail.indexOf(arrUrl[i]) > 0) check2 = true; } if (check1 && check2) { document.write(copyEmail); } else { alert("이메일 형식이 잘못 되었습니다.") } //]]> | cs |
특정 문자열을 찾을 때 마다 문자열을 자르고 다시 첨부터 검사 하는 방식이다.
그리고 이메일 중에 @ 가 바로 앞에 나올 수( pos 값이 0) 도 있으므로 사전에 검사한다.
그리고 이후에는 pos값이 앞에서 부터 계속 검사하므로 0 도 허용 한다.( abc@@naver.com 경우를 생각하면된다.)
이번에는 좀더 쉬운 indexof 의 처음 포지션을 지정해주는 방법을 보자.
2) 포지션을 고려하여 지정 해주는 방식.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | /** * */ //<![CDATA[ var userEmail = prompt("당신의 이메일 주소는?", ""); var copyEmail = userEmail; var arrUrl = [ ".co.kr", ".com", ".net", ".or.kr", "go.kr" ]; var check1 = false; var check2 = false; var count = 0; var pos=0; if (userEmail.indexOf("@") > 0) { while (true) { pos = userEmail.indexOf("@",pos+1); if(pos > -1) count++; else break; } if (count == 1) { check1 = true; } } for (var i = 0; i < arrUrl.length; i++) { if (userEmail.indexOf(arrUrl[i]) > 0) check2 = true; } if (check1 && check2) { document.write(copyEmail); } else { alert("이메일 형식이 잘못 되었습니다.") } //]]> | cs |
확실히 내용이 확줄어든 걸 알 수 있다.
따라서 inedxof 를 사용 할때는 포지션값을 생각해주고 코드를 짜는것이 더 좋아보인다.
예를 들어서 메일 검증으로 만들긴 했는데 사실 완벽한 검사는 아니다
단지 indexof 를 이용해 전부 찾는거에 집중 했으니 그 점만 알고가자
자바 스크립트 공부<3> - 정규 표현식 검사2 검증(아이디, 비밀번호, 이메일), 전방 탐색 (0) | 2018.09.28 |
---|---|
자바 스크립트 공부<2> - 정규 표현식을 이용한 검사 (0) | 2018.08.09 |
Html 공부 <내가 느낀 필수요소와 개념> (0) | 2018.08.02 |