数字的正则表达式包括小数点

时间:2015-09-29 13:30:35

标签: regex

我仍然试图拿起正则表达式,所以我似乎无法想出这个。我想能够匹配任何类型的数字,包括

之类的东西
[+-]?[0-9+\.]+([E][+-]?[0-9]+)?

我创建了以下正则表达式,它匹配所有这些:param.attribute,但是这也匹配单个小数点,例如,如果我有类似[0-9+\.]的东西,它会拾取小数点。我怎么能绕过这个?我认为在+部分ListView要求字符串包含至少一个数值。

2 个答案:

答案 0 :(得分:3)

您可以使用轮换来确保1..1匹配。如果您不想以匹配的单个句点结束,请避免使所有子模式都可选:

[-+]?(?:[0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)(?:[eE][-+]?[0-9]+)?
     ^--- Alernative 1 | Alternative 2-^

请参阅regex demo

更多"fun" facts about alternation in regular expressions

  

您可以使用交替来匹配几个可能的正则表达式中的单个正则表达式。   

  如果要搜索文字文本catdog,请使用竖线或竖线符号分隔这两个选项:cat|dog。如果您想要更多选项,只需展开列表:cat|dog|mouse|fish。   

  交替运算符具有所有正则表达式运算符的最低优先级。也就是说,它告诉正则表达式引擎匹配垂直条左侧的所有内容,或垂直条右侧的所有内容。如果要限制更改的范围,则需要使用括号进行分组。

这是我的5美分:为了保持正则表达式匹配尽可能干净,除非你需要在找到匹配后访问任何替代方案,否则使用非捕获组(即{ {1}})替换。

答案 1 :(得分:1)

这是一个命题:

[+-]?([0-9]+\.?[0-9]*|0?\.[0-9]+)([Ee][+-]?[0-9]+)?

请参阅demo here