字符串不能以零开头

时间:2013-01-22 10:42:12

标签: php regex preg-match

我有一个字符串,我想用正则表达式检查。它不允许以0开头。所以请看下面的例子:

012344 = invalid
3435545645 = valid
021 = invalid
344545 = valid

这个正则表达式在PHP中看起来如何?

PS。这必须是正则表达式解决方案!

2 个答案:

答案 0 :(得分:1)

REGEX应该是这样的:

^[1-9][0-9]*$

PHP代码:

<?php

    $regex = "#^[1-9][0-9]*$#";


    function test($value, $regex)
    {
          $text = "invalid";
          if(preg_match($regex, $value)) $text = "valid";
          return $value+" = "+$text+"\n\r";
    }

   echo  test('012345', $regex);
   echo  test('12345', $regex);

?>

答案 1 :(得分:-2)

那将是一个简单的/[1-9][0-9]*/。 请在下次更好地研究您的问题。 这也可以帮助你:Regular expression tester

修改

是的,答案得到了落实,因为它缺少了锚点,似乎是错误的。为了完整,我发布了我将使用这个正则表达式的PHP代码。不,没有错。它可能不是最优雅的方式,但我更喜欢检查正则表达式是否与整个字符串匹配。一个原因是要调试正则表达式并查看它实际匹配的内容我只需在=== $value之后注释return $matches[0]

<?php
  function matches($value) {
    preg_match("/[1-9][0-9]*/", $value, $matches);
    return $matches[0] === $value;
  }

  //Usage:
  if (matches("1234")) {
     //...
  }
?>