본문 바로가기
javascript/javascript

[자바스크립트 정규표현식] 작성하기3 - 기호 이용하기

by 알찬 퍼블리셔 2019. 5. 16.
728x90
반응형

기호(^)를 이용해 제외하고 추출하기 OR 문장의 시작부분이 일치하는지 검사하기 

 

제외하고 추출하기 

let quoteSample = "3 blind mice.";
let myRegex = /[^0-9 .]/gi;
let result = quoteSample.match(myRegex);

let myRegex = /[^0-9 .]/gi; 

이 의미는 0부터9, (공백), .(점)을 제외한 문자 이때 ^는 [] 안에 있어야한다.

(g=해당문자전체 추출/ 없을경우 해당하는 맨 앞에 한글자만 추출함// i=대소문자상관없이추출) 

 

result는 >>

b,l,i,n,d,m,i,c,e

 

 

문장의 시작부분이 일치하는지 검사하기

^기호가 []없이 사용된다면  시작부분이 일치되는지 검사한다. 

let rickyAndCal = "Cal and Ricky both like racing.";

let calRegex = /^Cal/;

// Cal로 문장이 시작되는지 

let result = calRegex.test(rickyAndCal);

let rickyAndCal = "Cal and Ricky both like racing.";
let calRegex = /^Cal/;
let result = calRegex.test(rickyAndCal);

result >>

true

 

만약

calRegex = /^Ricky/;

라면

 

result >>

false 가 된다.(문장의 시작부분이 아닌 중간에 들어가있으므로)

 

 

기호(+)를 이용해 연속되는 문자 추출하기

let difficultSpelling = "Mississippsi";
let myRegex = /s+/gi; 
let result = difficultSpelling.match(myRegex);

let myRegex = /s+/gi; ==> s가 1번이상 반복되는 문자

 

result >>

ss,ss,s

 

기호(*)를 이용해 연속되는 문자 추출하기

let chewieQuote = "Aaaaaaaaaaaaaaaarrrgh!";
let chewieRegex = /Aa*/g; 
let result = chewieQuote.match(chewieRegex);

let chewieRegex = /Aa*/g ==> A로시작하고 a가 0번이상 반복되는 문자

 

result >>

Aaaaaaaaaaaaaaaa

 

 

*과 +의 차이

Aa*

Aa+

A도 매칭되고

Aa도 매칭되고

Aaa도 매칭되지만

A는 매칭되지 않고

Aa는 매칭되고

Aaa도 매칭된다. 

let chewieQuote = "Aaaaaaaaaaaaaaaarrrgh! A Aa";
let chewieRegex = /Aa*/g; // Change this line
let result = chewieQuote.match(chewieRegex);


let difficultSpelling = "Aaaaaaaaaaaaaaaarrrgh! A Aa";
let myRegex = /Aa+/g; 
let result2 = difficultSpelling.match(myRegex);

 

 

기호($)를 이용해 문자의 끝 검사하기 

let caboose = "The last car on a train is the caboose";
let lastRegex = /caboose$/;
let result = lastRegex.test(caboose);

let lastRegex = /caboose$/;  ==> 검사하는 문장이 caboose로 끝나는지 검사

 

result >>

true

 

 

괄호 ({}) 사이에 숫자 넣어서 n번나타나는 문자 검사 

let caboose = "The last caar on a traaain is the caaaboose";
let lastRegex = /a{2}/g;
let result = caboose.match(lastRegex);

a{2} == a가 2번나타나는 문자열

result >>

aa,aa,aa

 

caar의 aa

traaain의 aa

caaaboose의 aa와 대응되고

a 는 하나이기때문에 대응되지 않는다. 

 

그렇다면 범위를 정해줄 수도 있다.

let caboose = "The last caar on a traaain is the caaaboose";
let lastRegex = /a{1,3}/g;
let result = caboose.match(lastRegex);

a가 1번이상 3번이하 연속되는 것을 찾는다

result >>

aa,a,aaa,aaa

 

범위를 무한정으로 지정할 수도 있다.

let caboose = "The last caar on a traaain is the caaaboose";
let lastRegex = /a{1,}/g;
let result = caboose.match(lastRegex);

이는 a가 1번이상 반복되는 모든 것을 찾는다.

 

 

 

기호(?)를 이용해 있는것과 없는것 모두 검사 

let favWord = "favorite";
let favRegex = /favou?rite/;
let result = favRegex.test(favWord);

favou?rite 이는 u가 있을수도 있고 없을 수도 있다는 것과 같다 

즉 favorite와 favourite 둘가 결과는 true가 나온다 .

 

 

 

728x90
반응형

댓글