[JS] CDT 로 배우는 Javascript 기능과 기술들 [5.0]

김현수·2023년 10월 14일
0

cdt

목록 보기
5/51


📰 Coding Test 에서 익히는 javscript 기능과 기술 등


func 객체 활용

const operations = {
  w: (n) => n + 1,
  s: (n) => n - 1,
  d: (n) => n + 10,
  a: (n) => n - 10,
};

console.log(operations["w"](2)); // 3

배열 요소 바꾸기 swap

const arr = [1,2,3,4,5];

arr[3] = 21;
[arr[2],arr[4]] = [arr[4],arr[2]];

console.log(arr); // [1,2,5,21,3]

Infinity 는 무한대

const min = Infinity;

console.log(Math.min(1000, min)); // 1000



정규표현식 이해 (코드 리뷰)

  • 프로그래머스 : 배열 만들기 2

  • 문제

    • 정수 l 과 r 을 매개변수로 줌
    • l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열 반환
    • 만약 그러한 정수가 없다면, -1이 담긴 배열을 반환
function solution(l, r) {
    const result = Array.from({length:r-l+1}, (_,i)=>i+l).filter(n=>!/[^05]/.test(n));
    return result.length ? result : [-1];
}

  • from : 배열 선언
// l ~ r 까지 길이만큼 1 부터 오름차순인 배열
Array.from({length:r-l+1}, (_,i)=>i+l)

  • filter : 배열 요소 필터링
// 주어진 함수의 테스트를 통과하는 모든 요소의 배열을 반환
filter(n=>!/[^05]/.test(n))

  • 정규 표현식과 test()
    • test() : 문자열이 정규 표현식을 만족하는지 여부 부울형으로 반환
    • [^05] : 0과 5를 제외한 모든 문자를 의미
// n 이 0 과 5 이외의 숫자를 포함하는지를 검사후 부정
!/[^05]/.test(n)


  • 정규표현식

    • 문자열에 나타나는 문자 조합과 관련된 패턴을 정의하는 문자열

    • 복잡한 문자열, 유효성 검사, 검색 및 치환 등의 작업을 유연하게 처리

    • 사용법

      리터럴 표기법: /pattern/flags
       생성자 함수 방식: new RegExp("pattern", "flags")
       
       @ 플래그
         - g: 전역 검색
         - i: 대/소문자 구분 없이 검색
         - m: 여러 줄 모드
      
       @ 주요 메서드
         - test(): 패턴과 일치하면 true, 
                   그렇지 않으면 false를 반환
         - exec(): 패턴과 일치하는 하나의 배열을 반환, 
                   일치하는 것이 없으면 null을 반환
         - match(): 문자열에서 패턴과 일치하는 모든 결과를 배열로 반환
         
       @ 주요 패턴 문자
         - \d: 숫자
         - \w: 알파벳 문자 및 숫자
         - \s: 공백 문자
         - .: 임의의 문자
         - *: 앞의 문자가 0회 이상 반복
         - +: 앞의 문자가 1회 이상 반복
         - ?: 앞의 문자가 0 또는 1회 등장
         - ^: 문자열 시작
         - $: 문자열 끝
         - |: 또는
         - [abc]: a, b, c 중 하나
         - [^abc]: a, b, c 제외한 문자
         - {n}: 앞의 문자가 n회 등장

웹 개발시 주로 사용되는 경우

  • 이메일 유효성 검사
function isValidEmail(email) {
    const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    return regex.test(email);
}
  • 전화번호 유효성 검사
function isValidPhone(phone) {
    const regex = /^\d{2,3}-\d{3,4}-\d{4}$/;
    return regex.test(phone);
}
  • URL 검사
function isValidURL(url) {
    const regex = /^(http|https):\/\/[^ "]+$/;
    return regex.test(url);
}
  • URL 검사
function isValidPassword(password) {
    const regex = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$/;
    return regex.test(password);
}
profile
일단 한다

0개의 댓글