Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用0值指数或尾随的0使科学记数法无效_Regex_Zero_Scientific Notation - Fatal编程技术网

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

Regex 使用0值指数或尾随的0使科学记数法无效,regex,zero,scientific-notation,Regex,Zero,Scientific Notation,我使用的是regex科学符号: /-?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/ 我想增加一点空间守恒,所以我还想禁止在小数点后尾随零,并禁止将零值作为指数 我认为在\.\d之后添加[1-9]不会强制执行尾随零,但我认为它也会强制在之后至少添加两个数字,这是不可取的 我不具备适当修改此正则表达式的必要经验 如何实现我的意图?您可以进行以下简单更改: /-?(?:0|[1-9]\d*)(?:\.\d*[1-9])?(?:[eE][+-]?[1-9]\d

我使用的是regex科学符号:

/-?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/
我想增加一点空间守恒,所以我还想禁止在小数点后尾随零,并禁止将零值作为指数

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

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


如何实现我的意图?

您可以进行以下简单更改:

/-?(?:0|[1-9]\d*)(?:\.\d*[1-9])?(?:[eE][+-]?[1-9]\d*)?/
请注意,
[1-9]\d*
将禁止带前导零的指数

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

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


会有用的。但是,如果小数部分明显,它会强制在点后加一个数字。

Gracchus,如果您没有尝试过regex hero,您可能想尝试一下。它允许人们对regex语句进行实验,并使用各种数据对它们进行测试@Gracchus:可能会有帮助(在线工作,无需安装)@Gracchus:如果您正在寻找一个交互式教程,请尝试一个好的参考,使用此网站:对于一本书,请尝试Jeffrey Friedl的《掌握正则表达式》。@Gracchus:是的,但由于不包括前导零的指数,0值的指数也被排除在外。@Gracchus:但是,如果您需要前导零的公差,可以使用:
[eE][+-]?0*[1-9]\d*
/-?(?:0|[1-9]\d*)(?:\.\d*[1-9])?(?:[eE][+\-]?\d+)?/
/-?(?:0|[1-9]\d*)(?:\.\d*[1-9])?(?:[eE][+\-]?[1-9]\d*)?/ # no (leading) zero exponent