HTML
格式化
支持Emmet,输入 p 后按 Tab键试试吧!
<head> ... </head>
<body>
</body>
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(不是字符串)
预览