如何以这种格式验证字符串:p [1或更多数字]?

par*_*tiz 2 php regex string

我想验证这些形式的字符串:

$string = 'p123455...
Run Code Online (Sandbox Code Playgroud)
  • 有效期:p1,p22,p54342534535
  • 无效:p,pp45,p543p,4p5232,q34

(第一个字符必须是'p',其他字符必须是1个或更多个数字)

我的尝试:

$valid = true;

if($string[0] != 'p')
    $valid = false;

$string = substr($string, 1);

if(!is_numeric($string)
    $valid = flase;

if($valid)
    echo 'string is valid.';
Run Code Online (Sandbox Code Playgroud)

但是有更短更快的方式吗?

Riz*_*123 7

您可以使用简单的正则表达式preg_match()一次性进行验证:

if(preg_match("/^p\d+$/", $string)){
    //valid
} else {
    //not valid
}
Run Code Online (Sandbox Code Playgroud)

正则表达式解释:

  • ^锚点为字符串的开头
  • p literal p
  • \ d匹配所有数字(0-9)
    • +量词:匹配1次或更多次
  • $ anchor为字符串的结尾