我有一个字符串 (例如“ 13524” ) 检查字符串是否仅包含数字的最简单方法是什么? 预期结果:
# removing expired vouchers:
for voucher in self.request.basket.vouchers.all():
if voucher.is_expired() or not voucher.is_available_to_user(user=self.request.basket.owner)[0]:
self.request.basket.vouchers.remove(voucher)
messages.error(self.request,_("The '%(code)s' voucher has expired") % {'code': voucher.code})
答案 0 :(得分:1)
您可以使用isNaN
var str = "23f";
console.log(!isNaN(str));
str = "2356"
console.log(!isNaN(str));
如果您想使用上述指定功能,可以尝试以下操作
if(!String.prototype.isNumber) {
String.prototype.isNumber = function() {
return !isNaN(this);
}
}
var str = "23f";
console.log(str.isNumber());
str = "2356"
console.log(str.isNumber());
正如adiga在评论中指出的那样,如果前面有-
,则上述代码将无法正常工作。为了排除这种情况,您需要将代码更新为以下
console.log(/^[0-9]+$/.test(str))
/^[0-9]+$/.test(this)
答案 1 :(得分:1)
您可以尝试在!
之前加入isNaN()
:
isNaN()
函数确定一个值是否为NaN
。注意: isNaN 函数内部的强制具有有趣的规则;您可能也想使用ECMAScript 2015中定义的Number.isNaN()
。
console.log(!isNaN('23f')); // false
console.log(!isNaN(2356)); // true
答案 2 :(得分:1)
您可以使用isNaN
var str = "23f";
console.log(!isNaN(str));
str = "2356"
console.log(!isNaN(str));
您也可以使用正则表达式
let reg = /^\d+(?:\.\d+)?$/
var str = "23f";
console.log(reg.test(str));
str = "2356"
console.log(reg.test(str));
/^\d+$
-如果您只想匹配整数/^\d+(?:\.\d+)?$
-如果您想要带或不带小数的数字/^[+-]?\d+(?:\.\d+)?$
-如果您想要带有符号的数字