当前位置: 首页 > 知识库问答 >
问题:

如何在Typescript中检查字符串是否为数字/浮点数?[副本]

松正阳
2023-03-14

以下是我要应用的验证:

  1. 字符串应包含 0 到 9 之间的任何字符。
  2. 它不应包含任何字母字符。
  3. 它最多可以包含一个表示负数的“-”(减号运算符),例如“-12”。
  4. 它最多可以包含一个“.”以涵盖浮点数(如“12.2”)的情况

现在,我已经尝试了各种组合,但仍然无法在Typescript中创建这样的条件。以下是我的尝试:

  • 使用正则表达式/^[0-9.{0,1}-{0,1}]/. test(mystring)

不幸的是,这对我不起作用。有人能帮我得到所需的解决方案吗?

共有3个答案

司空叶五
2023-03-14

试着这样做:

/^\-?(([1-9]\d*)|0)(\.\d )?$/

景稳
2023-03-14

正如上面的注释所解释的,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');
燕宜修
2023-03-14

在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

  • 如何检查字符串是否包含数字?