정규표현식은 객체이기때문에 test, exec등의 메소드를 사용할 수 있다.
const re = /ab+c/;
리터럴 정규표현식으로 패턴이 고정일때 사용하며 이것도 객체다.
let reg = 'ab+c';
const re = new RegExp(reg);
패턴이 변수일때는 정규표현식 객체를 생성하는 생성자함수를 사용해야 한다.
패턴식이 /abc/라면 어떤 문자열에 abc문자열이 있는지를 정규표현식으로 검사할 수 있다.
const re = /abc/;
const ret = re.test('sdkjabcsfskl'); // true
문자열에 abc가 있으므로 true를 반환한다.
const ret = re.exec('sdkjabcsfskl');
['abc', index: 4, input: 'sdkjabcsfskl', groups: undefined]
객체를 반환한다.
Quantifiers +, *, ? and {n}
/\d{5}/ 숫자갯수가 5개인 패턴 12345
/\d{3,5}/ 숫자갯수가 3~5개인 패턴 123, 12345
/\d{1,}/ 숫자갯수가 1개이상일때
?은 {0,1}의 속기형이다
/\d?/ 은 /\d{0,1}/와 같다.
은 {0,}의 속기형이다.
/\d/ 은 /\d{0,}/와 같다.
^는 시작기호
/^\d/ 숫자로 시작해야한다.
/ 숫자로 끝나야한다.
<input type="text" [(ngModel)]="firstName" #firstNameFC="ngModel" pattern="[a-zA-Z]{1}[a-zA-Z0-9]*">
pattern은 ngModel이 지원하는 유효성조건이며 해당 조건을 만족하지 않으면 객체를 반환한다.
pattern으로 문자열에 admin이 없어야 하는 조건을 만들 수 없기때문에 커스텀유효성검사로 한다.