文字列が次の形式のいずれかであることを確認するために、php で正規表現を作成したいと考えています。
- 整数のみの例: 1122
- 整数、整数の例: 88,99
- 整数,整数,整数 例: 88,99,19
誰も私を助けることができますか、何も考えることができません。
そのための最も単純な正規表現は次のようになります\d+(,\d+)*
\d+
- 0 ~ 9 の数字に一致(,\d+)*
- コンマと (上記のように) 0 ~ 9 の数字に一致します。* は、0 個以上の出現がある可能性があることを示します3回の繰り返しに制限する必要がある場合、これはうまくいきます:\d+(,\d+){0,2}
(,\d+){0,2}
- コンマと (上記のように) 0 ~ 9 の数字に一致します。{0,2} は、最大で 2 回出現する可能性があることを示しています (最初のもの\d+
が最初の整数に一致することに注意してください) 。編集
コメントで説明した問題は、使用される PHP 関数が完全一致ではなく検索を実行することです。
preg_match
- pattern で指定された正規表現に一致するサブジェクトを検索します。
したがって、正規表現は問題ありません。ただし、preg_match
機能については、
preg_match('/^\d+(,\d+)*$/')
- 最初の正規表現preg_match('/^\d+(,\d+){0,2}$/')
- 2 番目の正規表現^
文字列(件名)の先頭と$
一致し、文字列の末尾と一致します。
/^(\d+,)*\d+$/
これは、整数またはコンマで区切られた整数のリストである任意の文字列と一致します。
$var = '12'; // allow
//$var = '12,13'; // allow
//$var = '12,13,13'; // allow
//$var = 'aaa12,13,13fff'; // won't allow
//$var = '12,13,13,11'; // allow
if (preg_match('/^(\d+,)*\d+$/', $var))
{
echo 'correct';
}
else
{
echo 'wrong';
}