문제 상황.
회원가입 폼을 만들고 있는데
email 정규식을 설정하고 [계정 생성] 버튼을 누를 때마다 유효성 검사를 진행함.
유효성 검사는 test()를 사용함.
test()에 통과할 값으로 테스트를 진행했는데
true, false가 번갈아 가며 나오는게 아니던가...
const isPass = emailRegex.test(email);
console.log(isPass); // true 와 false가 번갈아가며 나옴
공식 문서를 살펴보니,
정규표현식에 g 플래그를 함께 사용할 경우 생길 수 있는 현상이라고 한다.
test()를 진행하면 정규표현식의 lastIndex 값이 업데이트되고,
test()값이 false를 반환하면 lastIndex 값이 다시 0으로 초기화된다.
나의 해결.
유효성 검사하는 함수 첫 부분에 lastIndex를 0으로 초기화하는 코드를 넣어주었다.
const checkForm = () => {
emailRegex.lastIndex = 0;
...
}
휴,,
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
RegExp.prototype.test() - JavaScript | MDN
test() 메서드는 주어진 문자열이 정규 표현식을 만족하는지 판별하고, 그 여부를 true 또는 false로 반환합니다.
developer.mozilla.org
'개발 > HTML+CSS+JS' 카테고리의 다른 글
[FullCalendar v6] 09. Event Color (이벤트에 배경색 넣기) (0) | 2024.08.13 |
---|---|
[FullCalendar v6] 08. Event Sources (이벤트 목록 가져오기) (0) | 2024.08.03 |
[FullCalendar v6] 07. selectable, draggable 달력으로 만들기 (0) | 2023.02.09 |
[FullCalendar v6] 06. Day 클릭 시, 다른 달력 뷰로 전환하기 (navLinks, navLinkDayClick) (0) | 2023.02.09 |
[FullCalendar v6] 05. 날짜 범위 지정하기 (minDate, maxDate) (0) | 2023.02.08 |