仅包含数字的字符串意味着它完全由数字字符(0-9)组成,不包含任何其他字符或符号。让我们来看看几种不同的方法来检查字符串是否仅包含数字。
1. 使用正则表达式配合 test() 方法
检查字符串是否仅包含数字最有效的方法是使用正则表达式配合 test() 方法。此方法检查字符串是否匹配数字的模式。
let s = "123456";
let regex = /^\d+$/;
let res = regex.test(s);
console.log(res);
输出
true
- ^ 断言字符串的开始。
- \d+ 匹配一个或多个数字。
- $ 断言字符串的结束。
- INLINECODE796e4be1 方法在字符串仅包含数字时返回 INLINECODE9a50de94,否则返回
false。
2. 使用 isNaN() 方法
我们可以使用 INLINECODEfb28f573 函数来检查一个值是否为 NaN(非数字)。如果一个字符串完全由数字组成,它将被转换为有效的数字,且 INLINECODE01b01449 将返回 INLINECODEaf5819f1。如果它包含数字以外的任何内容,它将返回 INLINECODEe48db779。
let s = "123456";
let res = !isNaN(s);
console.log(res);
输出
true
- 如果 INLINECODE1b9d110f 不是数字,INLINECODE28fe9e68 返回 INLINECODE9d302685;如果它是有效数字,则返回 INLINECODE89938c0e。
!符号对结果取反,以检查字符串是否为有效数字。
3. 使用 Array.prototype.every() 配合 split()
我们可以结合使用 INLINECODE12b07267 方法和 INLINECODE0a6c3766 方法来检查字符串中的每个字符是否都是数字。此方法会检查字符串中的每个字符,并确保所有字符都是数字。
let s = "123456";
let res = s.split(‘‘).every(char =>
char >= ‘0‘ && char <= '9');
console.log(res);
输出
true
split(‘‘)将字符串拆分为单个字符的数组。every()检查数组中的每个字符是否都是介于 ‘0‘ 和 ‘9‘ 之间的数字。
4. 使用 parseInt() 方法
我们还可以使用 parseInt() 函数将字符串转换为数字,然后检查结果是否与原始字符串匹配。如果字符串包含数字以外的任何内容,转换结果将不匹配。
let s = "123456";
let res = parseInt(s) == s;
console.log(res);
输出
true
parseInt(s)将字符串转换为整数。- 如果转换结果与原始字符串相同,则意味着字符串仅包含数字。
5. 使用 Number() 方法
Number() 方法也可用于将字符串转换为数字。如果字符串仅包含数字,它将返回一个有效的数字;否则,它将返回 NaN。
let s = "123456";
let res = !isNaN(Number(s));
console.log(res);
输出
true
Number(s)尝试将字符串转换为数字。isNaN()检查结果是 NaN 还是有效的数字。
总结
- 正则表达式 (^\d+$) 是检查纯数字字符串最简单、最高效的方法。
- isNaN() 和 Number() 方法适用于一般的数字验证。
- split() 和 every() 提供了一种更手动的方式,但在检查单个字符时仍然有效。
- 对于大多数用例,由于其简洁性和可读性,首选正则表达式方法。