正则表达式用于小数点前9位数字和小数点后1至3位数字

时间:2020-02-23 11:46:26

标签: php regex preg-match

我坚持尝试做一个正则表达式,该表达式允许小数点前9位,如果使用小数,则允许1到3位。

Eg:
123456789 //Valid
1234567890 //Invalid
123456789. //Invalid
123456789.0 //Valid
123456789.00 //Valid
123456789.000 //Valid
123456789.0000 //Invalid
Negative number are ok too

我正在尝试:

<?php

function numbers($val){
    return preg_match('/^[0-9]{1,9}([.]{0,1}([0-9]{1,3}))$/i',$val);
}

$n = '1234567899';

if(numbers($n)) {
    echo 'Valid Number';
} else {
    echo 'Invalid Number';
}
?>

1 个答案:

答案 0 :(得分:4)

您应该将小数部分设为可选:

^-?[0-9]{1,9}(?:\.[0-9]{1,3})?$

您更新的PHP函数:

function numbers($val){
    return preg_match('/^-?[0-9]{1,9}(?:\.[0-9]{1,3})?$/i', $val);
}

这是正则表达式模式的演示:

Demo

相关问题