使用0值指数或尾随0来使科学记数法无效

时间:2014-06-14 02:03:36

标签: regex zero scientific-notation

我使用this solution来表示科学记数法:

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

我想添加少量的空间保护,所以我还要在小数点后面禁止尾随零,并将零值作为指数。

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

我没有必要的经验来正确修改这个正则表达式。

我的意图如何实施?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

  

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

没有\d实际上是\d*,这意味着它只会强制执行一个[1-9](前面有无或很多 \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

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