它应匹配0.1,1,.01,但不匹配01,00.1或任何带字符的内容。
我正在尝试确定是否应该在将值放入mysql insert语句之前引用和转义值。我必须注意一些varchar键,这些键可以是数字,前导0如果作为数字插入则会被截断。
如果可用的话,我还会使用内置的php或mysql函数。
编辑:这个似乎涵盖了我的所有基础:
/^([1-9][0-9]*(\.[0-9]+)?|0\.[0-9]+|\.[0-9]+|0)$/
答案 0 :(得分:2)
试试这个正则表达式:
([1-9]\d*(\.\d+)?)|(0?\.\d+)
答案 1 :(得分:1)
这适合您的例子:
preg_match('#^(?=[1-9]|0\.|\.\d)\d*(\.\d+)?$#', $num)
?=
断言确保它以1-9
或0.
开头,因此排除任何其他前导零。您可能希望限制\d+
可以匹配的decmals数量。
答案 2 :(得分:1)