JavaScript에서 문자열을 비교할 때 대소문자를 구분하지 않고 특정 값이 존재하는지 확인하려면 정규 표현식(Regular Expression)을 활용하면 됩니다. 정규 표현식 생성 시 두 번째 인자로 'i' 플래그를 전달하면 대소문자를 무시한 검사가 가능합니다.
예제 코드
아래 예제는 배열에 담긴 여러 이름들을 하나의 정규 표현식으로 결합한 뒤, 대상 문자열에 해당 값이 포함되어 있는지 검사하는 코드입니다.
var allNames = ['john','John','JOHN'];
var makeRegularExpression = new RegExp(allNames.join("|"), "i");
var hasValue = makeRegularExpression.test("JOHN");
console.log("Is Present="+hasValue);코드 설명
- allNames: 다양한 대소문자 조합의 이름이 담긴 배열입니다.
- join("|"): 배열 요소를 OR(
|) 연산자로 연결하여 'john|John|JOHN' 형태의 패턴 문자열을 만듭니다. - new RegExp(pattern, "i"): 정규 표현식 객체를 생성하며,
'i'플래그는 대소문자를 구분하지 않도록 설정합니다. - test(): 주어진 문자열에 패턴이 일치하면
true, 일치하지 않으면false를 반환합니다.
프로그램 실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 아래 명령어를 사용합니다. 파일 이름은 본인이 저장한 파일명으로 지정하면 됩니다(여기서는 demo130.js 기준).
node fileName.js
실행 결과
프로그램을 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
PS C:\Users\Amit\JavaScript-code> node demo130.js Is Present=true
추가 팁: toLowerCase() 활용하기
정규 표현식 외에도 toLowerCase() 또는 toUpperCase() 메서드를 사용해 문자열을 모두 소문자 또는 대문자로 변환한 후 비교하는 방법도 있습니다.
var target = "JOHN";
var hasValue = allNames.some(name => name.toLowerCase() === target.toLowerCase());
console.log("Is Present=" + hasValue); // true두 방법 모두 대소문자 구분 없이 값을 확인할 수 있으며, 단순 동등 비교에는 toLowerCase()가, 부분 문자열 검색이나 패턴 매칭에는 정규 표현식이 더 적합합니다.