我正在使用此正则表达式[+-]?(\d+((\.|\,)\d*)?|(\.|\,)\d+)([eE][+-]?\d+)?
对照以下数字列表:
1
1.2
1.0
1,0
1wer,043
1dd.44
1D
我的正则表达式匹配发布列表中的每个示例。
这适用于第一组(1
,1.2
,1.0
,1,1
),但它也会返回第二组匹配({{1} },1wer,043
,1dd.44
)。
如何更新我的正则表达式以排除最后3个示例?
答案 0 :(得分:1)
问题似乎是你没有逃避期间角色。这反过来转换为匹配任何角色。我把你的表达改为:
^[+-]?(\d+((\.|\,)\d*)?|(\.|\,)\d+)([eE][+-]?\d+)?$
应该做你想做的事。
有一个例子here。
分别在开头和结尾的额外^
和$
应确保字符串仅包含数字数据。如果这不是您所追求的,也就是说,您希望使用该表达式来提取数值数据,那么您可以简单地省略它们。
根据@ nhahtdh的评论,可以通过将.
和,
放在字符类中来改进您的表达式:
^[+-]?(\d+([.,]\d*)?|[.,]\d+)([eE][+-]?\d+)?$
答案 1 :(得分:0)
您应该使用开始(^)和结束($)元字符
^[+-]?(\d+((.|\,)\d*)?|(.|\,)\d+)([eE][+-]?\d+)?$