10

フォームの入力を検証する必要があります。入力は 1 ~ 19 桁の数字であると予想しています。入力はゼロから始めることもできます。ただし、それらがすべてゼロではないことを検証したいと思います。入力が数値であり、1 から 19 の数字であることを保証する正規表現があります。

^\d[1,19]$

しかし、文字列全体がすべてゼロではないというチェックを含める方法がわかりません。私はこれを試しました

^(![0]{1,19})(\d[1,19])$

しかし、可変数のゼロを許可しているため、0000000000000000001 で失敗します。

文字列全体がゼロでないことを確認するにはどうすればよいですか?

ありがとう。

ASP.NET RegularExpressionValidator でこれを実行しようとしているので、単一の式を望んでいました。他にも選択肢があるので、これができなくても仕方ありません。

4

4 に答える 4

18

^(?!0+$)\d{1,19}$

于 2009-02-06T17:29:53.280 に答える
2

否定的な先読みを行うだけです:

(?!^0+$)(^\d{1,19})

これは Perl では問題なく動作します。

于 2009-02-06T17:35:52.550 に答える
2

(?!0+$) は先読みディレクティブです。?! 文字列の末尾まで 1 つ以上の 0 を検索するための否定先読みコマンドです。それが一致する場合、文字は消費され、通常の数字検索は \d{1,19} のままになります。

Boost Perl Regexpには、Boost によって認識される perl regexp についての良い議論があります。

于 2009-02-06T17:41:05.300 に答える
0

そのために正規表現は必要ありません

            ulong test;
        string number = "1234567890123456789";
        if (ulong.TryParse(number, out test) && (test < 9999999999999999999ul) && (test > 0))
            Console.WriteLine(test);
于 2009-02-06T17:38:42.310 に答える