在 JavaScript 中检查字符串是否为数字

Hiten Kanwar 2023年10月12日
  1. 使用isNaN()函数在JavaScript中检查一个给定的字符串是否是一个数字
  2. 使用+操作符在JavaScript中检查一个给定的字符串是否是一个数字
  3. 使用parseInt()函数在JavaScript中检查一个给定的字符串是否是一个数字
  4. 使用Number()函数在JavaScript中检查一个给定的字符串是否是一个数字
  5. 使用正则表达式在JavaScript中检查一个给定的字符串是否是一个数字
在 JavaScript 中检查字符串是否为数字

数字在编程语言中是表示整数、浮点数等的数据类型。而字符串代表的是所有字符,而不仅仅是数值。字符串可以包含数值。

在本文中,我们将检查一个给定的字符串是否是一个数字。

使用isNaN()函数在JavaScript中检查一个给定的字符串是否是一个数字

isNaN()函数代表is Not-a-Number,它是一个内置的JavaScript函数,用于判断一个给定的值是否不是一个数值,包括实际的数字和数值字符串。

isNaN()函数返回true,如果该值不是一个数字,返回false,如果它是一个数字或者可以转换为一个有效的数字。

下面是isNaN()函数的基本语法:

isNaN(value)
  • value:您想要检查是否为数字的值。这可以是一个变量、常量或表达式。

示例:

console.log(isNaN('195'))
console.log(isNaN('boo'))
console.log(isNaN('100px'))

输出:

false 
true
true

如果我们想要创建一个对有效值返回true的函数,我们可以通过创建一个否定isNaN()函数输出的函数来实现。

function isNum(val) {
  return !isNaN(val)
}
console.log(isNum('aaa'));
console.log(isNum('13579'));
console.log(isNum('-13'));

输出:

false
true
true

现在,这个名为isNum()的函数将对一个有效的数值返回true

处理带有小数的数值字符串

isNaN()函数非常灵活,可以处理带有小数点的数值字符串。例如:

const str = '3.14';  // The string we want to check
const isNumeric = isNaN(str);

if (isNumeric) {
  console.log(`${str} is NOT a number.`);
} else {
  console.log(`${str} is a number.`);
}

输出将正确地识别'3.14'为一个数字:

3.14 is a number.

使用+操作符在JavaScript中检查一个给定的字符串是否是一个数字

在JavaScript中,+操作符有双重用途:它可以用于算术加法,也可以作为一元运算符进行类型强制转换。

当应用于字符串时,+操作符尝试将其转换为数值。如果字符串可以成功转换为一个数字,结果将是一个有效的数值;否则,结果将是NaN(不是一个数字)。

例如,

console.log(+'195')
console.log(+'boo')

输出:

195
NaN

使用parseInt()函数在JavaScript中检查一个给定的字符串是否是一个数字

在JavaScript中,parseInt()方法用于解析一个字符串并将其转换为整数(一个整数)。它从左到右读取字符串,直到遇到一个不是整数的有效部分字符,然后停止解析。

下面是使用parseInt()的基本语法:

parseInt(string[, radix]);
  • string:要解析并转换为整数的字符串。
  • radix(可选):一个介于2到36之间的整数,代表字符串中使用的进制。此参数是可选的,如果省略,JavaScript将使用10进制。

当无法从字符串中提取出数字时,它返回NaN

例如,

console.log(parseInt('195'))
console.log(parseInt('boo'))

输出:

195
NaN

处理带有进制的数值字符串

parseInt()方法还允许您指定字符串中使用的进制(基数)。例如,您可以解析二进制(基数2)、八进制(基数8)或十六进制(基数16)数字。

这是一个解析十六进制字符串的例子:

const hexString = '1A';                    // Hexadecimal string
const intValue = parseInt(hexString, 16);  // Specify base 16

if (isNaN(intValue)) {
  console.log(`${hexString} is NOT a number.`);
} else {
  console.log(`${hexString} is a number.`);
}

在这种情况下,输出将正确地识别'1A'为一个十六进制数:

1A is a number.

使用Number()函数在JavaScript中检查一个给定的字符串是否是一个数字

Number()函数将参数转换为表示对象值的数字。如果无法将其转换为数字,则返回NaN

我们也可以使用它来检查字符串是否是一个数字。

例如,

console.log(Number('195'))
console.log(Number('boo'))

输出:

195
NaN

使用正则表达式在JavaScript中检查一个给定的字符串是否是一个数字

正则表达式,通常称为 regex,是指定一组字符串的模式。它可用于在字符串中进行模式匹配,使其成为字符串验证等任务的多用途工具。

在JavaScript中,您可以使用RegExp构造函数或使用斜杠之间的正则表达式字面值表示法来创建正则表达式,如/模式/

我们可以使用这种模式来检查一个字符串是否包含数字。

首先,我们需要定义一个匹配数值的正则表达式模式。我们可以创建一个简单的模式,用于匹配正负整数和浮点数:

const numberPattern = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;

这个模式的作用如下:

  • ^:断言字符串的开头。
  • [-+]?:匹配一个可选的正负号。
  • [0-9]*:匹配小数点前的零个或多个数字。
  • \.?:匹配一个可选的小数点。
  • [0-9]+:匹配小数点后的一个或多个数字。
  • ([eE][-+]?[0-9]+)?:匹配一个可选的指数部分,如e-3E+4

现在,将正则表达式模式的test()方法应用于字符串。如果字符串与模式匹配,则test()方法返回true,否则返回false

const isNumber = numberPattern.test(str);

例如,

function isNumeric(val) {
  return /^-?\d+$/.test(val);
}

console.log(isNumeric('aaa'));
console.log(isNumeric('13579'));
console.log(isNumeric('-13'));

输出:

false
true
true

相关文章 - JavaScript String