정규표현식 part1

katsukichi·2021년 3월 9일
0

CodeStates_IM

목록 보기
25/48

이메일 유효성검사

let regExp = /^0-9a-zA-Z@0-9a-zA-Z\.[a-zA-Z]{2,3}$/i;

핸드폰번호 유효성검사

let regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;

문자열 str이 주어질때 길이가 5또는 7 이면서 숫자로만 구성되어 있는지 확인하는함수
결과는 Boolean


function solution(str) {
    return /^\d{5}$|^\d{7}$/.test(str);
}

이런식으로 정규표현식을 알아두면 문자열을 다룰때 코드를 간결하게 줄일수 있는 유리한 상황이 있다.


정규표현식 사용하기

정규표현식은 두가지 방법이있다.

리터럴 패턴

정규표현식 규칙을 슬래시 (/)로 감싸 사용한다.
슬래시 안에 들어온 준자열이 찾고자하는 문자열이며, 컴퓨터에게 "슬래시 사이에 있는 문자열을 찾고싶어!"라고 명령하는것이다.


let pattern = /c/;

생성자 함수 호출패턴


let pattern = new RegExp('c');

정규표현식 내장 메소드

내장 메소드를 이용하면 어떤 문자열 안에 원하는 정보를 찾거나 특정 패턴에 대응하는 문자열을 검색, 추출, 다른 문자열로 치환할 수 있다.

RegExp 객체의 메소드

exec()

exec 는 execution의 줄임말로, 원하는 정보를 뽑아낼때 사용
검색의 대상이 찾고자하는 문자열에 대한 정보를 가지고있으면 이를 배열로 치환하며 , 찾는문자열이 없다면 null을 반환


let pattern = /c/;
pattern.exec("code")

// 이경우 c가 포함되어있으므로 ['c']를 반환한다.

test()

찾고자 하는 문자열이 대상안에 있는지의 여부를 boolean으로 리턴


let pattern = /c/;
pattern.test("code");
// 이경우 포함되므로 true

String 객체의 메소드

match()

replace()

split()

설명 생략

flag

정규표현식은 플래그를 설정해 줄 수 있다.

플래그는 추가적인 검색옵션의 역할이고

이 플래그들은 각자 혹은 함께 사용하는것이 모두 가능 , 순서에 구분없다

아래는 자주사용되는 3가지 플래그


i

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


let withi = /c/i;
let withouti = /c/;
"Code".match(withi); // ['C']
"Code".mathc(withouti); // null

g

global의 약자로 g를 붙이면 검색된 모든 결과를 리턴한다.


let withg = /c/g;
let withoutg = /c/;
"coolcode".match(withg); // ['c','c'] 
"coolcode".match(withoutg); // ['c'] g가 없으면 첫 번째 검색 결과만 반환

m

m이 붙으면 다중행을 검사한다.


let str = `1st : cool
2nd : code
3rd : dev`
str.match(/c/gm)
//3개의 행을 검색 모든 c를 반환
// ['c','c']
str.match(/c/m)
// m은 다중행을 검색하게 해 주지만, g 를 빼고 검색하면 검색 대상을 찾는 순간 검색을 멈추기 때문에
// 첫 행의 ['c'] 만 리턴
profile
front-back / end developer / Let's be an adaptable person

0개의 댓글