2015-07-28 52 views
2

我使用这个正则表达式[+-]?(\d+((\.|\,)\d*)?|(\.|\,)\d+)([eE][+-]?\d+)?针对数字的以下列表:的正则表达式整数拦截并漂浮在蟒蛇

1 
1.2 
1.0 
1,0 

1wer,043 
1dd.44 
1D 

我的正则表达式中发布列表中的每个实例相匹配。

这是确定用于所述第一组(11.21.01,1),但它也返回用于第二组(1wer,0431dd.441D)匹配。

如何更新我的正则表达式以排除最后3个示例?

回答

1

问题似乎是你没有逃离周期字符。这反过来转换为匹配任何字符。我已将您的表情更改为:

^[+-]?(\d+((\.|\,)\d*)?|(\.|\,)\d+)([eE][+-]?\d+)?$ 

哪个应该做你以后的事情。

举例here

额外的^$分别在开始和结束时应该确保字符串只包含数字数据。如果这不是你想要的,也就是说,你想用这个表达式来提取数字数据,那么你可以简单地忽略它们。

按@ nhahtdh的评论,你的表达可以通过将.,在字符类进行改进:

^[+-]?(\d+([.,]\d*)?|[.,]\d+)([eE][+-]?\d+)?$ 
+1

可以通过将'.'和','放入字符类'^ [+ - ]?(\ d +([。,] \ d *)?| [。,] \ d +)来改进正则表达式。 [eE] [+ - ]?\ d +)?$' – nhahtdh

+0

@nhahtdh:谢谢你他的建议。 – npinti

0

您应该使用开始(^)和年底($)元字符

^[+-]?(\d+((.|\,)\d*)?|(.|\,)\d+)([eE][+-]?\d+)?$