我正在使用这个正则表达式 [+-]?(\d+((\.|\,)\d*)?|(\.|\,)\d+)([eE][+ -]?\d+)? 针对以下数字列表:
1
1.2
1.0
1,0
1wer,043
1dd.44
1D
我的正则表达式匹配发布列表中的每个示例。
这对于第一组(1、1.2、1.0、1,1)是可以的,但是它还会返回第二组的匹配项(1wer,043、1dd.44、1D)。
如何更新我的正则表达式以排除最后 3 个示例?
请您参考如下方法:
问题似乎是您没有转义句点字符。这反过来翻译以匹配任何字符。我已将你的表情更改为:
^[+-]?(\d+((\.|\,)\d*)?|(\.|\,)\d+)([eE][+-]?\d+)?$
哪个应该做你想要的。
有一个例子here .
分别在开头和结尾的额外 ^ 和 $ 应确保字符串仅包含数字数据。如果这不是您想要的,也就是说,您想使用该表达式来提取数值数据,那么您可以简单地省略它们。
根据@nhahtdh 的评论,可以通过将 . 和 , 放在字符类中来改进您的表达式:
^[+-]?(\d+([.,]\d*)?|[.,]\d+)([eE][+-]?\d+)?$
