我很接近,我只需要一些关于正确的提示。 基本上我想要返回true,如果我有字符串1.0,但如果我有字符串1..0或除数字以外的任何字符,则返回false。
所以我需要匹配除数字以外的任何字符,但我也可以匹配2个或更多句点。
EX:
1.0 => true
2.000004 => true
foobar => false
2..0 => false
2 => true
2.0.0.0.0 => false
我目前一直在玩弄这个:/ [ - zA-Z] |。{2,} /
我的翻译是它匹配任何字母或任何2个句点.. 它可以工作,但它只匹配2个连续的周期,所以发生以下情况
2.0.0.0.0 => true (I want to be false, as in I want to match this)
我想使用\ D而不是[a-zA-Z]来避免任何奇怪的ASCII字符,但是句点在\ D的子集中但不在[a-zA-Z]中
任何提示?谢谢!
答案 0 :(得分:0)
我已经测试了所有选项
^\.{1}?[0-9]*\.{1}?[0-9]+$
http://rubular.com/r/5ll1Grhy6H
如果您需要负数:
^[.-]{1}?[0-9]*\.{1}?[0-9]+$
答案 1 :(得分:0)
这是一种相反的方法:
/\.{2,}|[^\d\.-]|(\d\.){2,}|\.\z|.-/
这个正则表达式会发现"不正确"字符串,包含:
此比较中返回true
的所有字符串
string !~ /\.{2,}|[^\d\.-]|(\d\.){2,}|\.\z|.-/
应该是有效数字(浮点数或整数)