我正在寻找
的正则表达式有效:
20000
20.000
如果使用逗号,则不应与逗号匹配,之后是什么。 无效
20.000,12
现在我正在使用:
([0-9]+([.][0-9]+)*)+?
但是这个也用逗号后面的最后两位数字。
答案 0 :(得分:3)
答案 1 :(得分:2)
如果在正则表达式的开头添加^,则只有字符串开头的部分匹配
^([0-9]+([.][0-9]+)*)+?
但我认为
^\d+(\.\d+)*
是匹配数字的更好解决方案
答案 2 :(得分:-1)
如果要匹配浮点数,请使用(^\d*.?\d+)
答案 3 :(得分:-1)
问题中没有任何内容表明结果必须是有效数字。因此看起来表达式需要接受任何数字或句点,在这种情况下正则表达式非常简单,以下内容应该有效:
^([0-9\.]+)$
以下是我展示结果的测试
20000 - pass
20.000 - pass
20.000,12 - fail
1.000.000 - pass
23000,000 - fail
有关信息,我使用下面的PHP代码进行测试:
$testdata = array('20000', '20.000', '20.000,12', '1.000.000', '23000,000');
$pattern = "/^([0-9\.]+)$/";
foreach ($testdata as $k => $v) {
$result = preg_match($pattern, $v)? 'pass': 'fail';
echo "".$v." - ".$result."<br />";
}