2017-02-08 6 views
1

私はテストしていて、グーグルではありますが、コンマで区切られた数字を検証するためのパターンはまだありません。長い正規表現のパターン - PHPのnoob

9の数字、数字のみ、スペースなし、各桁のための主要な数はゼロ

^(?:\s*\d{9}\s*(?:,|$))+$ 

が、カンマは入力ファイルので、必要とされる無行く

注意を試すことができません3〜20(最大)のコンマで区切った整数

+0

['^ [1-9] \ d {8}(?:、[1-9] \ d {8})* $'](https://regex101.com/r/sqUeRt/1)または - 少なくとも1つのカンマ - ['^ [1-9] \ d {8}(?:、[1-9] \ d {8})+ $'](https: /regex101.com/r/sqUeRt/2)。 –

+0

少なくとも3つのカンマ区切りの数字と20までの数字が必要ですか?返信の人に感謝します^^[1-9] \ d {8}(?:、[1-9] \ d {8}){2,19} $ ' –

答えて

1

あなたは空白を入れないでくださいが、あなたのパターンには\s*(0+空白)を使用すると述べました。また、(?:,|$),またはstringの終わりと一致しているため、パターンには末尾の,が使用できます。

私はregex demo

詳細を参照してください

^[1-9]\d{8}(?:,[1-9]\d{8}){2,19}$ 

使用することをお勧め:

  • ^ - 文字列
  • [1-9]の開始 - 9桁の番号の最初の数字0にすることはできません。(合計で、3〜20)2〜19
    • ,の発生 - -9にのみ
    • \d{8} - 数
    • (?:,[1-9]\d{8}){2,19}の8残りの桁コンマ
    • [1-9]\d{8}){2,19}から
    • 上記参照
  • $ - 文字列の最後。
+1

ありがとうウィクショーこのパターンそれをして、正規表現のデモで確認 –

1

preg_match('=^[1-9][0-9,]*$=', $x);は9桁でなければなりません(オプションのカンマ?その場合はコンマが必要ですか?preg_match('=^[1-9][0-9]{2},?[0-9]{3},?[0-9]{3}$=', $x);

+0

入力ファイルは3〜20(最大)のカンマ区切り整数 –

+0

ですので、コンマは数値の一部ではありません(例:500,000,000)。その場合は、['str_split'](http://php.net/manual/en/function.str-split.php)を使用してファイル入力をコンマで区切り、' =^[1-9] [0-9] {8} $ 'を検証します。 – alanlittle

+0

助けてくれてありがとう^ [1-9] \ d {8}(?:、[1-9] \ d {8}){2,19} $は私が探していたパターンでした –