正则表达式匹配多个点

时间:2015-10-10 16:51:41

标签: regex

[Editted] 我对正则表达式相对较新,现在我正面临一个用例,其中目标字符串应该只包含一个点'.'。更具体地说,我正在进行浮点检测,我认为它应该只包含一个点和一个指数" e"。

我的正则表达式现在看起来像这样:(?=.*[0-9]{1,})(?=.*[\.][0-9])(?=.*[eE][+-]?[1-9])。它似乎正在研究测试字符串,如:

2.1E12  
3.141E23

但是一旦我测试:

1.15E10.34

它仍然过去了。

有谁知道我在这里做错了什么?还有人可以推荐一个学习正则表达式的好资源吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

要验证表示为字符串的浮点数,请使用以下模式:

^[0-9]*\.[0-9]+([eE][0-9]+)?$

这将验证您有:

  1. 小数点前面的0位或更多位数,但没有别的。
  2. 正好一个小数点。
  3. 小数点后至少有一位数字(1.样式浮动不被接受)
  4. 如果你有一个E,你后面有一个或多个数字(只有数字)。
  5. 当然,这假设字符串只是您要测试的数字,正如您的问题所示。如果是这种情况,我们可以删除任何需要外观的方法。

    根据您的语言,简单地尝试将字符串转换为浮点数来捕捉失败可能更为优雅。

答案 1 :(得分:0)

A)如果您只想匹配'。' (带有len 1和char [0]的字符串=='。',您可以使用

^\.$

B)如果你想匹配任何长度的字符串,只有一个点,你可以使用

[^\.]\.[^\.]

你能否发表评论告诉我你想要哪个案例(A / B),我可以帮助改进答案

答案 2 :(得分:0)

anubhava above所评论,只需使用:

^\.$

用于正则表达式解决方案。

但是,您可以改为使用字符串比较:

testString == "."