【问题标题】:Invalidate scientific notation with 0 value exponent or trailing 0s使用 0 值指数或尾随 0 使科学计数法无效
【发布时间】:2014-06-14 02:03:36
【问题描述】:

我正在使用this solution 正则表达式科学记数法:

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

我想添加少量的空间节约,所以我还想禁止小数点后的尾随零和零值作为指数。

我认为在\.\d 之后添加[1-9] 将强制没有尾随零,但我认为它也会在. 之后强制至少两个数字,这是不可取的。

我不具备正确修改此正则表达式的必要经验。

如何实现我的意图?

【问题讨论】:

  • Gracchus,如果你还没有尝试过正则表达式英雄,你可能想试一试。它允许人们对正则表达式语句进行试验,并用各种数据对它们进行无止境的测试。 RegexHero.net.
  • @Gracchus: regex101.com 可能会有所帮助,然后(在线工作,无需安装)
  • @Gracchus:如果您正在寻找交互式教程,请尝试 regexone.com 要获得良好的参考,请使用此站点:regular-expressions.info 要获得书籍,请尝试 Jeffrey Friedl 的 Mastering Regular Expressions。

标签: regex zero scientific-notation


【解决方案1】:

你可以做这个简单的改变:

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

请注意,[1-9]\d* 将禁止带前导零的指数。

【讨论】:

  • @Gracchus:是的,但是由于前导零的指数被排除在外,因此也排除了 0 值的指数。
  • @Gracchus:但是,如果您需要前导零的容差,您可以使用:[eE][+-]?0*[1-9]\d*
【解决方案2】:

我认为在\.\d 之后添加[1-9] 将不强制使用尾随零,但我认为它也会在. 之后强制至少两个数字

No \d 实际上是 \d*,这意味着它只会强制执行一个 [1-9](前面是 none 或 many \ds)。所以

/-?(?:0|[1-9]\d*)(?:\.\d*[1-9])?(?:[eE][+\-]?\d+)?/
/-?(?:0|[1-9]\d*)(?:\.\d*[1-9])?(?:[eE][+\-]?[1-9]\d*)?/ # no (leading) zero exponent

工作。但是,如果小数部分明显,它会在点后强制一位数字。

【讨论】:

    猜你喜欢
    • 2014-05-26
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多