판별
match()
인자에 포함된 문자를 찾으면 이를 반환(Array로)
일치하는게 없으면 null반환
1. 일반 문자열
if (str.match('red') === 'red') {
console.log('Okay');
}
2. 정규표현식
let new_id = 'hello'
new_id.match(/^[a-z]$/) //['hello']
var test = 'love you. love me. love everything!'
var regExp = /love/gi;
test2 = test.match(regExp);
['love', 'love', 'love']
// test2변수에 배열로 모든 love 텍스트가 저장됨
var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var regexp = /[A-E]/gi;
var matches_array = str.match(regexp);
console.log(matches_array);
// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
3. 객체
매개변수가 문자열이나 숫자면 해당 매개변수는 내부적으로 new RegExp(obj)를 사용하여 RegExp로 변환된다
var str1 = "NaN means not a number. Infinity contains -Infinity and +Infinity in JavaScript.",
str2 = "My grandfather is 65 years old and My grandmother is 63 years old.",
str3 = "The contract was declared null and void.";
str1.match("number"); // "number"는 문자열임. ["number"]를 반환함.
str1.match(NaN); // NaN 타입은 숫자형임. ["NaN"]을 반환함.
str1.match(Infinity); // Infinity 타입은 숫자형임. ["Infinity"]를 반환함.
str1.match(+Infinity); // ["Infinity"]를 반환함.
str1.match(-Infinity); // ["-Infinity"]를 반환함.
str2.match(65); // ["65"]를 반환함
str2.match(+65); // 플러스 기호가 붙은 숫자형. ["65"]를 반환함.
str3.match(null); // ["null"]을 반환함.
isNaN()
Not a Number의 약자로 숫자인지 판별하는 함수
string도 Number를 이용하여 바꿨을 때 숫자가 아닌 NaN이 나오면 true임
주의 : 빈문자열, 공백있는 문자열 => 똑같이 거짓
isNaN(NaN); // 참
isNaN(undefined); // 참
isNaN({}); // 참
isNaN(true); // 거짓
isNaN(null); // 거짓
isNaN(37); // 거짓
// 문자열
isNaN("37"); // 거짓: "37"은 NaN이 아닌 숫자 37로 변환됩니다
isNaN("37.37"); // 거짓: "37.37"은 NaN이 아닌 숫자 37.37로 변환됩니다
isNaN("123ABC"); // 참: parseInt("123ABC")는 123이지만 Number("123ABC")는 NaN입니다
isNaN(""); // 거짓: 빈 문자열은 NaN이 아닌 0으로 변환됩니다
isNaN(" "); // 거짓: 공백이 있는 문자열은 NaN이 아닌 0으로 변환됩니다
// dates
isNaN(new Date()); // 거짓
isNaN(new Date().toString()); // 참
// 이것이 허위 양성이고 isNaN이 완전히 신뢰할 수 없는 이유이다.
isNaN("blabla") // 참: "blabla"는 숫자로 변환됩니다.
// 이것을 숫자롯 parsing 하는 것을 실패하고 NaN을 반환한다.