JavaScript- (라이브러리~ 정규표현식)
Web/OpenTutorials

JavaScript- (라이브러리~ 정규표현식)

1. 라이브러리 이용 방법

- 라이브러리는 모듈과 비슷한 개념으로, 모듈이 프로그램을 구성하는 작은 부품으로써의 로직을 의미한다면,

라이브러리는 자주 사용되는 로직을 재사용하기 편하도록 잘 정리한 일련의 코드의 집합을 의미한다고 할 수 있다.

 -> 유명 라이브러리의 예로 jQuery가 있다.

ex) https://code.jquery.com 

 

jQuery CDN

The integrity and crossorigin attributes are used for Subresource Integrity (SRI) checking. This allows browsers to ensure that resources hosted on third-party servers have not been tampered with. Use of SRI is recommended as a best-practice, whenever libr

code.jquery.com

2. UI, API의 차이점

    ex) alert("hello world"); 라는 코드를 넘겼을때 경고창이 뜬다면, 경고창은 UI, 코드는 API이다.

 

  1)UI (User Interface의 약자)

     : 사용자의 정보를 받아 애플리케이션에게 전달한다. (prompt 창)

      

  2) API (Application Programming Interface의 약자)

  : 우리가 만든 웹 애플리케이션에서 prompt 창이 실행되기 위해, 웹브라우저에게 자바스크립트 문법에 따라 전달한 코드 

 

 => prompt 창은 웹브라우저가 미리 만들어 놓고 준비한 것으로, 우리는 prompt 코드를 웹브라우저에게 실행함으로써,

  웹브라우저가 미리 만들어 놓은 창을 웹브라우저가 실행 할 수 있도록 명령한다.

  : 우리가 만든 웹애플리케이션이 웹브라우저에 무언가를 요청하는 인터페이스이므로 API라고 부른다.

 

 

3. 정규 표현식

   : 문자열에서 특정한 문자를 찾아내는 도구이다. 이 도구를 이용하면 수십줄이 필요한 작업을 한줄로 끝낼 수 있다.

  -> 정규 표현식은 하나의 언어라고 할 수 있다.

   -> 컴파일 단계에서 패턴(대상)을 찾고, 실행 단계에서 어떤 활동을 구체적으로 하게 된다.

 

1) 찾고자 하는 패턴 만들기

var pattern =/a/ 
// (/~/ 사이에는 우리가 찾고자 하는 문자열 넣기)
var pattern = new RegExp('a');
//우리가 찾고자 하는 패턴
// (/a/ == new RegExp('a');)

 

2) 정규표현식을 컴파일해서 객체를 만들었다면, 이제 문자열에서 원하는 문자를 찾아야 한다.

: 정규 표현식은 문자열을 추출하고, 관련된 정보가 존재하는지 테스트하고,

 

ex) RegExp.exec() 

pattern.exec('abcde'); // 우리가 찾고자 하는 pattern인 a를 리턴한다.

var pattern = /a./; // (.) 이 붙으면 a 뒤에 아무나 임의적인 문자가 붙어도되는 것이다.
pattern.exec('abcde'); // ab를 리턴하게 된다.

console.log(pattern.exec('abcdef')); //["a"]를 값으로 하는 배열을 리턴한다.
console.log(pattern.exec('bcdefg')); //bcdefg에는 a가 없기 때문에 null을 리턴한다.

 

   ex2) RegExp.test()

console.log(pattern.test('abcdef')); //true
console.log(pattern.test('bcdefg;)); //false
// 인자 안에 패턴이 해당되는 문자가 있으면 true,없으면 false를 리턴한다.

 

3) 문자열 객체의 몇몇 메소드는 정규표현식을 사용할 수 있다.

 

ex) String.match(), String.replace()

var pattern='a';
var str='abcdef';
str.match(pattern);
//["a"]가 리턴이 된다.

str.replace(pattern,'A');
//str가 Abcdef로 대체된다.

 

4) 옵션

 : 정규표현식 패턴을 만들때 옵션을 설정 할수 있다.

 

  ex1) i 옵션

 : i를 붙이면 대소문자를 구분하지 않는다.

var xi=/a/;
console.log("Abcde".match(xi)); //null

var oi=/a/i;
console.log("Abcde".match(oi)); // return ["A"];

 

 ex2) g 옵션

  : g를 붙이면 검색된 모든 결과를 리턴한다

var xg=/a/;
console.log("abca".match(xg));
//["a"] a가 한번만 검출된다.

var og=/a/g;
console.log("abca".match(og));
// ["a","a"] a가 두번다 검출된다.

var og=/a/ig;
console.log("Aabca".match(og));
// 검출된 모든 문자를 배열로 만들어서 리턴해준다. ["A","a","a"]

 

 

 

5) 캡처

 : 괄호 안의 패턴은 마치 변수처럼 재사용할 수 있다.

캡처그룹은 한걸음 더 나아가서 매치된 부분에 속하는 일부를 다시 분리하여 돌려주는 방법이다.

 => 예를 들어 hello.ac.kr 로 되어있는 모든 이메일 주소를 bye.ac.kr 로 바꾸려고 하는 경우를 예로 들 수 있다.

: 이메일로 매치하고, 그중에 다시 한번 hello.ac.kr를 매치하려면 코드가 복잡해지게 된다.

: 패턴 안에서 일부분을 캡처 그룸으로 표시하면 매치된 문자열 중에서 캡처 그룹에 해당하는 것을 따로 뽑아 낼 수 있다. 

 

 

  (\w+)\s(\w+) => \w부분은 문자를 의미한다. (A~Z, a~z, 0~9) 까지를 의미한다.

 

var pattern= /(\w+)\s(\w+);
var str="coding everybody"
var result= str.replace(pattern,"$2,$1");
console.log(result);

//everybody, coding이라는 결과가 나온다.
//각각 (\w) 부분이 변수 처리 되었기 때문이다.
//$2,$1 각각 그룹이 치환되었다.

 

 

6) 치환

 : url에 해당하는 부분만 찾아서 패턴을 정한 후에, 링크된 html코드로 교체하는 코드이다.

var urlPattern = /\b(?:https?):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*/gim;
var content = '생활코딩 : http://opentutorials.org/course/1 입니다. 네이버 : http://naver.com 입니다. ';
var result = content.replace(urlPattern, function(url){
    return '<a href="'+url+'">'+url+'</a>';
});
console.log(result);

=> 정규 표현식은 다양한 용도로 이용될 수 있다는 것을 알아두자~

 

http://www.nextree.co.kr/p4327/

 

정규표현식(Regular Expression)을 소개합니다.

날이 갈수록 개인정보 보호에 관련하여 보안정책을 점진적으로 강화하고 있습니다. 이에 따라 Web에서 회원가입 시 Password 설정을 복잡해진 보안정책에 맞추다 보니 복잡하게 조합해야만 정상적으로 가입을 할 수 있습니다. 이러한 강화된 보안정책 때문에 기존에 사용하던 자신만의 Password를 인위적으로 보안정책에 맞추는 경우가 많을 것입니다. 그러다 보니, 종종 Log-In을 할 때 Password를 잊어버려서 곤란한

www.nextree.co.kr

=> 더 참고하면 좋을 것 같음.

'Web > OpenTutorials' 카테고리의 다른 글

CSS 복습  (0) 2020.07.14
Javascript - 함수~모듈  (0) 2020.01.11
JavaScript 기본 문법 정리  (0) 2020.01.10
HTML 주요 태그 정리  (0) 2020.01.03
HTML로 간단한 웹페이지를 제작해보자  (0) 2020.01.03