使用 0 值指数或尾随 0 使科学计数法无效
Posted
技术标签:
【中文标题】使用 0 值指数或尾随 0 使科学计数法无效【英文标题】:Invalidate scientific notation with 0 value exponent or trailing 0s 【发布时间】: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。 【参考方案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 \d
s)。所以
/-?(?:0|[1-9]\d*)(?:\.\d*[1-9])?(?:[eE][+\-]?\d+)?/
/-?(?:0|[1-9]\d*)(?:\.\d*[1-9])?(?:[eE][+\-]?[1-9]\d*)?/ # no (leading) zero exponent
会工作。但是,如果小数部分明显,它会在点后强制一位数字。
【讨论】:
以上是关于使用 0 值指数或尾随 0 使科学计数法无效的主要内容,如果未能解决你的问题,请参考以下文章