Javascript JS-如何验证字符串是否为数字

Javascript JS-如何验证字符串是否为数字,javascript,Javascript,我尝试验证各种输入字符串。因此,我尝试使用正则表达式。不幸的是,所有否定的情况也都符合事实。如何确定正则表达式必须匹配整个字符串 const regex=/(^([0-9]+(.| |,)+[0-9]?)$)| |(^([0-9]+)$)| |(^(.| |,)+[0-9]+$)/; const testsetpositive=[“34”、“45.45”、“0.7867”、“3434,34”、“7834”、“546”、“45546”、“0”] const testsetnevag=[“wegr

我尝试验证各种输入字符串。因此,我尝试使用正则表达式。不幸的是,所有否定的情况也都符合事实。如何确定正则表达式必须匹配整个字符串

const regex=/(^([0-9]+(.| |,)+[0-9]?)$)| |(^([0-9]+)$)| |(^(.| |,)+[0-9]+$)/;
const testsetpositive=[“34”、“45.45”、“0.7867”、“3434,34”、“7834”、“546”、“45546”、“0”]
const testsetnevag=[“wegrger”、“3443,34erf”、“3443.34erf”、“4525tg”、“1211.23”、“1.211,23”]
TestSetPositive.forEach(函数(值){
console.log(regex.test(value));
//应该始终返回true
})
控制台日志(“------------------------------”);
testsetnevag.forEach(函数(值){
console.log(regex.test(value));
//应该始终返回false

})
parseInt
parseFloat
可以返回数字,即使字符串包含字母,请检查代码段:

const testsetnevag=[“wegrger”、“3443,34erf”、“3443.34erf”、“4525tg”、“1211.23”、“1.211,23”];
testsetnevag.forEach(函数(值){
log(parseFloat(value));
})
您可以使用该类验证字符串是否为有效数字。如果它不是一个有效的数字,它将返回
NaN

例如:

>Number(".23232")
0.23232
>Number(".23232abc")
NaN
使用isNaN(侧注“45546”,不应为数字)


一个简单的
regex
解决方案:

const regex=/^(\d*[,]?\d+\d+[,]?\d*)$/;
const testsetpositive=[“34”、“45.45”、“0.7867”、“3434,34”、“7834”、“546”、“45546”、“0”]
const testsetnevag=[“wegrger”、“3443,34erf”、“3443.34erf”、“4525tg”、“1211.23”、“1.211,23”]
TestSetPositive.forEach(函数(值){
console.log(regex.test(value));
//应该始终返回true
})
控制台日志(“------------------------------”);
testsetnevag.forEach(函数(值){
console.log(regex.test(value));
//应该始终返回false

})
可以使用,如果输入字符串不是数字,则返回true。

带逗号的数字有效吗?@NinaScholz yes,在这种情况下应有效;e、 例如,“123123”为真,但不应接受分隔符;e、 例如,“1.000,23”false,“1211.23”false您这样做是因为数值都是字符串吗?(带引号的数组中的项将成为字符串)。如果数组中的数值没有字符串,则它们将被视为数字。例如,[4,66,“66”,“4”]是2个数字和2个字符串。它们都是字符串,我错过了一些负面示例,这些示例可能不包括在这种方法中。我用否定的例子更新了这个问题;e、 例如,
“1211.23”、“1.211,23”
都应计算为false@d4rty您是使用
作为十进制还是千位分隔符?无论如何,我已经更新了我的代码片段!不,他们不应该被接受(错误的输入),任何千分之一separator@d4rty如果它们不应该被接受,为什么它们中的一些在
testsetpositive
中?您确切的意思是在正集合中的哪个字符串?
        const testsetMixed = [34, 45.45, ".7867", "wegrger", "3443,34erf", "546.", "45546,", "0"]


    testsetMixed.forEach(function(value){
       if( isNaN(value)) {
         console.log('not number');
       } else {
         console.log('number');
       }

    })