0

我有一个字符串,我想用正则表达式检查。不允许它以 0 开头。因此请参阅以下示例:

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

等等

这个正则表达式在 PHP 中的外观如何?

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

4

2 回答 2

1

正则表达式应如下所示:

^[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);

?>
于 2013-01-22T11:05:11.337 回答
-2

那么这将是一个简单的/[1-9][0-9]*/. 请下次更好地研究您的问题。这也可以帮助你:正则表达式测试器

编辑:

是的,答案被否决了,因为它缺少锚点并且似乎是错误的。为了完整起见,我发布了我将与此正则表达式一起使用的 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")) {
     //...
  }
?>
于 2013-01-22T10:47:29.993 回答