아래의 코드는 aaa@aa까지만 입력해도 true를 리턴하며, 마침표를 입력한 후에야 다시 false를 반환한다.
const emailRegularExpression = new RegExp('[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$');
아래의 코드는 정상적인 이메일을 끝까지 입력할 때까지 false를 리턴한다.
const emailRegularExpression = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
1,2의 차이는 플래그 유무밖에 없는데 1에 플래그를 추가해도 다른 결과를 보인다.
당연하다. i 플래그는 대소문자를 구분하지 않겠다는 뜻이니까.
1,2 결과가 다른 이유는 아직도 모르겠다. 뭐라고 검색해야 할까?
backslash is the escape character in string literals. To create a literal \ for the expression, you have to escape it is the string
const emailRegularExpression = new RegExp('[0-9a-zA-Z]([-_\\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\\.]?[0-9a-zA-Z])*\\.[a-zA-Z]{2,3}$');