0

正規表現で確認したい文字列があります。0 で始まることは許可されていません。そのため、次の例を参照してください。

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

この正規表現は PHP ではどのように見えますか?

PS。これは正規表現ソリューションでなければなりません!

4

2 に答える 2

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

?>
于 2013-01-22T11:05:11.337 に答える
-2

まあそれは単純でしょう/[1-9][0-9]*/。次回は質問をよく調べてください。これも役に立ったかもしれません:正規表現テスター

編集:

ええ、アンカーがなく、間違っているように見えるため、答えは反対票を投じられました。完全を期すために、この正規表現で使用する php コードを投稿しました。いいえ、それは間違っていません。これは最もエレガントな方法ではないかもしれませんが、後で正規表現が文字列全体に一致したかどうかを確認するのが好きです。=== $value理由の 1 つは、正規表現をデバッグして実際に一致したものを確認するには、後でコメントアウトする必要があるためです。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 に答える