この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - JavaScript コーディング問題
166. 有効な数字文字列

以下はJavaScriptのコード例です。

function isValidNumber(str) {
  if (str.trim() === '') return false; // 文字列の先頭と末尾のスペースを削除して、空白文字列である場合はfalseを返します。

  const num = Number(str); // 文字列を数字に変換します。

  // 数字として解釈できない場合や、10進数以外の表記を持っている場合はfalseを返します。
  if (isNaN(num) || /[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/.test(str) !== true) {
    return false;
  }

  return true;
}

この関数は、与えられた文字列が有効な数字であるかどうかをチェックします。数字として解釈できない場合や、10進数以外の表記を持っている場合はfalseを返します。それ以外の場合はtrueを返します。

この関数は、まず先頭と末尾のスペースを削除して、文字列が空白文字列である場合にfalseを返します。次に、Number()を使用して文字列を数字に変換し、その値がNaNであるか、10進数以外の表記を持っているかどうかをテストするために正規表現を使用します。

もう一つのアプローチは、正規表現を使用して文字列が正しいフォーマットであるかどうかをチェックすることです。こちらがその例です。

function isValidNumber(str) {
  return /^(0|[+-]?[1-9]\d*)(\.\d+)?([eE][+-]?\d+)?$/.test(str);
}

この関数では、正規表現を使用して、文字列が整数、小数、指数表記のフォーマットであるかどうかをチェックします。正規表現の各部分は次のように意味があります。

  • ^: 文字列の先頭
  • (0|[+-]?[1-9]\d*): 整数。最初に0が来るか、正数または負数の符号が来てから1つ以上の数字が来る。
  • (\.\d+)?: 小数。ドットと1つ以上の数字で構成されている場合がある。
  • ([eE][+-]?\d+)?: 指数表記。eまたはEが来て、それに続く正数または負数の符号と1つ以上の数字が来る場合がある。
  • $: 文字列の末尾

正規表現にマッチした場合は、関数はtrueを返します。それ以外の場合はfalseを返します。

両方のアプローチは同様に有効ですが、正規表現を使用する場合はコードが簡潔になり、理解しやすいかもしれません。