Php 模式匹配,不以零开始

Php 模式匹配,不以零开始,php,javascript,design-patterns,matching,Php,Javascript,Design Patterns,Matching,我有一个用户输入年龄的字段,我想做一些错误检查。如果用户输入数字“0”并单击“提交”,它将显示一个错误,说明他们不能以零开头。但是我还想允许一个包含数字0的年龄,比如20岁。我不知道如何不允许某人输入起始数字0 我的PHP代码是: <?php $age_numeric = preg_match("/^(^[1-9]){1,}$/", $age); ?> //some more code <?php if (!$age_numeric) echo "age can only be

我有一个用户输入年龄的字段,我想做一些错误检查。如果用户输入数字“0”并单击“提交”,它将显示一个错误,说明他们不能以零开头。但是我还想允许一个包含数字0的年龄,比如20岁。我不知道如何不允许某人输入起始数字0

我的PHP代码是:

<?php
$age_numeric = preg_match("/^(^[1-9]){1,}$/", $age);
?>
//some more code
<?php if (!$age_numeric) echo "age can only be numeric."; ?>

//还有代码吗
那么为什么不

$age_numeric = preg_match("/^[1-9][0-9]*$/", $age);

使用
是数字

if(!empty($age) && is_numeric($age)) {
  echo 'valid age';
} else {
  echo 'invalid age';
}
//样本输出

$age = 0; // invalid age
$age = ''; // invalid age
$age = 'lkjsd'; // invalid age
$age = 12a; // invalid age
$age = 1; // valid age

$begin_with_zero=preg_match(“/^0/”,$age);

此regexp匹配不带前导零的有效数字:

^(0|[1-9]\d*)$

没有正则表达式:

if (is_numeric($age) && strspn($age, '0') == 0) {
    // $age is numeric and doesn't start with "0"
}
另见:

if (is_numeric($age) && strspn($age, '0') == 0) {
    // $age is numeric and doesn't start with "0"
}