以下是我要应用的验证:
现在,我已经尝试了各种组合,但仍然无法在Typescript中创建这样的条件。以下是我的尝试:
不幸的是,这对我不起作用。有人能帮我得到所需的解决方案吗?
试着这样做:
/^\-?(([1-9]\d*)|0)(\.\d )?$/
正如上面的注释所解释的,parseFloat不能满足您的所有要求。我不喜欢Reg Ex的这种做法。
对您来说,最简单的方法是使用一元将字符串强制转换为数字
const stringTransformedToNumber = +"-12.3";
const isInvalid = isNaN(stringTransformedToNumber);
console.log(isInvalid ? 'Invalid' : 'Valid');
更好的方法是只使用< code>isNaN:
const isInvalid = isNaN("-12.3");
console.log(isInvalid ? 'Invalid' : 'Valid');
在TypeScript中,使用以下可以接受任何值的函数:
const isFixed = (o: any) => {
const s = String(o)
return !isNaN(+s) && isFinite(+s) && (typeof o === 'number' || !/e/i.test(s))
}
或者,如果您只检查字符串:
const isFixedString = (s: string) => !isNaN(+s) && isFinite(+s) && !/e/i.test(s)
请注意,第一个函数中的显式String()
强制转换是为了避免多次调用值的toString(()<-code>或
或
[Symbol.toPrimitive]()
,并避免检查自动更新类型的冲突值,如
在两个定义中使用一元
运算符的强制转换专门用于参数类型与TypeScript中
isNaN()
和isFinite()
的全局定义兼容,即使JavaScript可以处理任何类型,它们也会出于某种原因需要号
参数。否则可以删除这些强制转换,而不会对结果进行任何更改。
仅仅使用<代码>!isNaN(mystring)
,您将检查用< code>Number()转换字符串是否会导致< code>NaN:
let arr = ['5', '-5', '.5', '5.', '0', '5e0', '5E0', 'Infinity', '-Infinity', '5a', 'n', '--5'];
arr.forEach(str => console.log(str, !isNaN(str)))
问题内容: 检查字符串是否可以在Python中表示为数字的最佳方法是什么? 我目前拥有的功能是: 它不仅丑陋且缓慢,而且看起来笨拙。但是我还没有找到更好的方法,因为调用floatmain函数甚至更糟。 问题答案: 如果您要解析(正数,无符号)整数而不是浮点数,则可以将该isdigit()函数用于字符串对象。 字符串方法- isdigit():Python2,Python3
我有一个gpa程序,它使用方法,该方法比较字母“a”和用户输入的两个字符串,然后检查它们是否输入“a”。但现在我想添加一个异常,该异常在输入数字时会执行错误消息。我想让程序意识到整数输入与字符串不一样,并给出一个错误消息。我可以使用哪些方法来比较类型字符串变量和int类型的输入,并抛出异常?
问题内容: 在解析字符串之前,如何检查字符串是否为数字? java 字符串 数字 问题答案: 使用及更高版本:或。 使用Apache Commons Lang 3.4及以下版本:或。 你还可以使用返回true空字符串,并忽略字符串中的内部空格。另一种方法是使用根据Java基本检查数字是否可解析的方法。(链接的javadocs包含每种方法的详细示例。)
在解析字符串之前,如何检查字符串是否为数字?
问题内容: 如何在Java中检查字符串是否为数字? 问题答案: 使用Apache Commons Lang 3.5及更高版本:NumberUtils.isCreatable或StringUtils.isNumeric。 使用Apache Commons Lang 3.4及以下版本:NumberUtils.isNumber或StringUtils.isNumeric。 你还可以使用StringUti
如何检查字符串是否包含数字?