匹配小数的正则:
$a = 1.0;
$pattern = '/^\d+\.\d+$/';$result = preg_match($pattern, $a);
echo $result; //输出结果是0为什么没有匹对成功呢?把$a改成$a=1.1就行,反正只要小数位不是0就可以。
但是\d不是能匹配所有数字吗?另外这个正则在php手册中是这样写的,也是匹配出小数:
$pattern = '/^(\d+)?\.\d+$/';
和我这样写二者有什么区别吗?谢谢!
$a = 1.0;
$pattern = '/^\d+\.\d+$/';$result = preg_match($pattern, $a);
echo $result; //输出结果是0为什么没有匹对成功呢?把$a改成$a=1.1就行,反正只要小数位不是0就可以。
但是\d不是能匹配所有数字吗?另外这个正则在php手册中是这样写的,也是匹配出小数:
$pattern = '/^(\d+)?\.\d+$/';
和我这样写二者有什么区别吗?谢谢!
$a = '1.0';就可以得到正确的结果正则表达式是用于字符串做模式匹配的
如果你给他的不是字符串,那他就要做数据类型转换
1.0 转换成字符串就变成 1 了,这是php的内部机制,不必要问为什么
那 "/^\d+\.\d+$/" 和 "/^(\d+)?\.\d+$/"这两个正则有什么不一样呢?