在 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 構造函式或使用斜線之間的正規表示式字面值來創建正規表示式,例如 /pattern/

我們可以使用這樣的模式來檢查一個字串是否包含數字。

首先,我們需要定義一個匹配數值的正規表示式模式。我們可以創建一個簡單的模式,可以匹配正負整數以及浮點數:

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