JavaScript에서 두 문자열이 서로 같은지 확인해야 할 때가 있습니다. 이때 단순히 === 연산자를 사용하면 대소문자까지 구분하기 때문에, 대소문자를 무시하고 비교하려면 별도의 처리가 필요합니다.
예를 들어 다음과 같은 함수를 작성한다고 가정해 보겠습니다.
areEqual('done', 'DOne') → true'done'과 'DOne'은 글자의 대소문자만 다를 뿐 내용은 동일하므로, 비교 결과는 true가 되어야 합니다.
해결 방법: toLowerCase() 활용
가장 간단하고 널리 사용되는 방법은 toLowerCase() 메서드로 두 문자열을 모두 소문자로 변환한 뒤 비교하는 것입니다. 변환된 문자열이 완전히 일치하면 원래 문자열도 대소문자를 제외한 상태에서 동일하다고 볼 수 있습니다.
예제 코드
const str1 = 'done';
const str2 = 'DOne';
const caseInsensitiveCheck = (str1 = '', str2 = '') => {
const lowerStr1 = str1.toLowerCase();
const lowerStr2 = str2.toLowerCase();
return lowerStr1 === lowerStr2;
};
console.log(caseInsensitiveCheck(str1, str2));실행 결과
콘솔에 출력되는 결과는 다음과 같습니다.
true
추가 팁: toLocaleLowerCase()와 정규식
특정 언어(예: 터키어)의 로케일 규칙에 맞게 대소문자를 변환해야 한다면 toLocaleLowerCase()를 사용하는 것이 더 안전합니다.
str1.toLocaleLowerCase('tr') === str2.toLocaleLowerCase('tr');또한 정규식을 활용해 대소문자 구분 없이 비교할 수도 있습니다.
new RegExp(`^${str1}$`, 'i').test(str2); // true다만 정규식 방식은 특수문자가 포함된 경우 이스케이프 처리가 필요하므로, 일반적인 경우에는 toLowerCase()를 사용하는 방법이 가장 간결하고 효율적입니다.