let str = 'apple apply';
//?는 앞의 문자(e) 가 최대 한번 반복가능함을 의미한다
const regexp = /apple?/g
console.log(str.match(regexp)); //[ 'apple', 'appl' ]
let str = 'apple apply';
//|은 or을 의미
const regexp = /apple|apply/g
console.log(str.match(regexp)); //[ 'apple', 'apply' ]
//a또는 p가 한번 이상 반복되는 문자열
const regexp = /a+|p+/g
console.log(str.match(regexp)); //[ 'a', 'pp', 'a', 'pp' ]
//[]와 -를 사용해 범위 지정
//대문자, 소문자 알파뱃이 한 번 이상 반복되는 문자열
const regexp = /[A-Za-z]+/g
console.log(str.match(regexp)); //[ 'apple', 'apply' ]
//알파벳 한 글자
const regexp = /[A-Za-z]/g
console.log(str.match(regexp)); //['a', 'p', 'p', 'l','e', 'a', 'p', 'p', 'l', 'y' ]
//알파벳이 3번 반복
const regexp = /[A-Za-z]{3}/g
console.log(str.match(regexp)); //[ 'app', 'app' ]
let str = '123,456,789';
//숫자의 경우
const regexp = /[0-9]+/g
console.log(str.match(regexp)); //[ '123', '456', '789' ]
//숫자 또는 ','반복
const regexp = /[0-9,]+/g
console.log(str.match(regexp)); //[ '123,456,789' ]
//\d는 숫자를 의미
const regexp = /[\d,]+/g
console.log(str.match(regexp)); //[ '123,456,789' ]
//\D는 숫자를 제외한 것을 의미
const regexp = /[\D,]+/g
console.log(str.match(regexp)); //[ ',', ',' ]
let str = 'apply_apple&fresh_apple';
//\w는 [A-Za-z0-9_]와 같다. \W는 \w를 제외한 것들이다
const regexp = /[\w]+/g
console.log(str.match(regexp)); //[ 'apply_apple', 'fresh_apple' ]
//[]안의 ^는 not을 의미한다
const regexp = /[^_&]+/g
console.log(str.match(regexp)); //[ 'apply', 'apple', 'fresh', 'apple' ]
//[]밖의 ^는 가장 앞 글자를 뜻한다
const regexp = /^apply/g
console.log(regexp.test(str)); //true
//$는 가장 뒤 글자를 뜻한다
const regexp = /apple$/g
console.log(regexp.test(str)); //true
let str = '0123456789';
//숫자로만 이뤄진 문자열 검사
//앞과 뒤가 숫자이고 숫자가 한 번 이상 반복
const regexp = /^\d+$/g
console.log(regexp.test(str)); //true
출처
이웅모, 모던 자바스크립트 Deep Dive(2021)