代码之家  ›  专栏  ›  技术社区  ›  KhiladiBhaiyya

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

  •  0
  • KhiladiBhaiyya  · 技术社区  · 6 年前

    这个问题已经有了答案:

    以下是我要应用的验证:

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

    现在,我尝试了各种组合,但仍然没有在typescript中创建这样的条件。 以下是我的尝试:

    • 使用regex /^[0-9.0,1-0,1]/。测试(myString)

    不幸的是,这对我不起作用。 有人能帮我找到想要的解决方案吗?

    3 回复  |  直到 6 年前
        1
  •  3
  •   Patrick Roberts Benjamin Gruenbaum    6 年前

    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() valueOf() [Symbol.toPrimitive]() { n: 0, valueOf: () => n++ }

    + isNaN() isFinite() number

    !isNaN(mystring) Number() NaN

    let arr = ['5', '-5', '.5', '5.', '0', '5e0', '5E0', 'Infinity', '-Infinity', '5a', 'n', '--5'];
    
    arr.forEach(str => console.log(str, !isNaN(str)))

    Infinity isFinite(mystring) && !/e/i.test(mystring)

    let arr = ['5', '-5', '.5', '5.', '0', '5e0', '5E0', 'Infinity', '-Infinity', '5a', 'n', '--5'];
    
    arr.forEach(str => console.log(str, !isNaN(str) && isFinite(str) && !/e/i.test(str)))
        2
  •  2
  •   AdityaParab    6 年前

    +

    const stringTransformedToNumber = +"-12.3";
    
    const isInvalid = isNaN(stringTransformedToNumber);
    
    console.log(isInvalid ? 'Invalid' : 'Valid');
    

    isNaN

    const isInvalid = isNaN("-12.3");
    
    console.log(isInvalid ? 'Invalid' : 'Valid');
    
        3
  •  -2
  •   Marek Powroźnik    6 年前

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