点击查看html编辑器说明文档

js 判断字符串是否为数字edit icon

|
|
Fork(复制)
|
|
作者:
lynn-ssk
提交反馈
嵌入
设置
下载
HTML
格式化
支持Emmet,输入 p 后按 Tab键试试吧!
<head> ...
展开
</head>
<body>
            
            
        
</body>
CSS
格式化
            
            
        
JS
格式化
            
            function isStringNumber(str) {
  // 确保输入是字符串类型
  if (typeof str !== 'string') {
    return false;
  }

  // 去除字符串两端的空白
  str = str.trim();

  // 如果字符串为空,返回 false
  if (str.length === 0) {
    return false;
  }

  // 使用正则表达式匹配数字格式
  // 这个正则表达式匹配:
  // - 可选的正负号
  // - 整数部分(可以是0)
  // - 可选的小数部分
  // - 可选的指数部分(科学计数法)
  const numberPattern = /^[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?$/;

  if (!numberPattern.test(str)) {
    return false;
  }

  // 额外检查,排除 'Infinity', '-Infinity' 和 'NaN'
  const num = Number(str);
  if (!Number.isFinite(num) || Number.isNaN(num)) {
    return false;
  }

  return true;
}

// 测试函数
console.log(isStringNumber('123'));       // true
console.log(isStringNumber('-123'));      // true
console.log(isStringNumber('0'));         // true
console.log(isStringNumber('12.34'));     // true
console.log(isStringNumber('.34'));       // true
console.log(isStringNumber('-.34'));      // true
console.log(isStringNumber('1e5'));       // true
console.log(isStringNumber('-1.23e-4'));  // true
console.log(isStringNumber(' 123 '));     // true(会去除两端空白)

console.log(isStringNumber(''));          // false
console.log(isStringNumber('  '));        // false
console.log(isStringNumber('abc'));       // false
console.log(isStringNumber('12a'));       // false
console.log(isStringNumber('1.2.3'));     // false
console.log(isStringNumber('Infinity'));  // false
console.log(isStringNumber('-Infinity')); // false
console.log(isStringNumber('NaN'));       // false
console.log(isStringNumber(123));         // false(不是字符串)
        
预览
控制台
清空