Regex 以下正则表达式不适用于“45”

Regex 以下正则表达式不适用于“45”,regex,Regex,我有一个不适用于45的正则表达式,它适用于-1.3434 1.43454+-[0-9].[0-9] 正则表达式: ^\-?[0-9]+\[0-9]$尝试以下操作: ^(\-)?[0-9]+(\.[0-9]+)?$ 从左到右解释模式 从行的开头开始-^ 0-1个字符--? 一个或多个数字[0-9]+ 组的0-1:文字句点后跟一个或多个数字。[0-9]+ 匹配到行尾$ 在您的正则表达式点符号中。这是需要的。试试这个: ^(\-)?[0-9]+(\.?[0-9]{1,})?$ 固定它需要像这样,以

我有一个不适用于45的正则表达式,它适用于-1.3434 1.43454+-[0-9].[0-9]

正则表达式: ^\-?[0-9]+\[0-9]$

尝试以下操作:

^(\-)?[0-9]+(\.[0-9]+)?$
从左到右解释模式

从行的开头开始-^ 0-1个字符--? 一个或多个数字[0-9]+ 组的0-1:文字句点后跟一个或多个数字。[0-9]+ 匹配到行尾$
在您的正则表达式点符号中。这是需要的。试试这个:

^(\-)?[0-9]+(\.?[0-9]{1,})?$

固定它需要像这样,以允许可选的十进制:

^-?\d+(\.\d+)?$
在字符串^的开头,有一个可选的破折号-?,后跟一些数字\d+。然后它也可以出现一次小数\。后跟一些数字\d+-一起作为\.\d+?。然后是字符串$的结尾


注意:破折号不需要转义,因为它在字符类之外。

45中没有点。我认为您的尾随数字上需要一个星号或加号。对-它与一个以上的十进制数字不匹配。将只对一个数字起作用。正则表达式在干净编写时足够神秘-尽量避免不必要的混乱。您保留了破折号不必要的转义和分组。如果有快捷方式,为什么要对数字使用[0-9]\d?小数点本身不需要问号量词,因为在整个匹配的组中有另一个问号量词。为什么使用{1,}而不是通用快捷键+?