14

正規表現を使用して PHP でユーザー名を検証しようとしていますが、送信したものはすべてチェックに失敗します。私はまだこれでとても新しいです。

if ( !preg_match('/^[A-Za-z]{1}[A-Za-z0-9]{5-31}$/', $joinUser) )

ルール:

  • 文字で始まる必要があります
  • 6~32文字
  • 文字と数字のみ

私はこのオンラインテスターこれも使っています私はこのスレッドこのスレッドを読みましたが、私よりも少し複雑なようで (先読み? とさまざまな特殊文字)、あまり理解できませんでした。

私がリンクした最初のスレッドを読んだ後、私は「文字」と言うことが、受け入れられると考えられているもの、つまり外国の文字、アクセント付きの文字などにどのように影響するかをよく理解していないようです.英語のアルファベット (これは ASCII ですか?) と 0 から 9 の数字を見ただけです。

ありがとう。

4

4 に答える 4

34

唯一の問題は、最後の量指定子のスペルを間違えたことです。

{5-31}である必要があります{5,31}

あなたの正規表現は

if ( !preg_match('/^[A-Za-z][A-Za-z0-9]{5,31}$/', $joinUser) )

をスキップできますが{1}、害はありません。

于 2012-11-15T07:05:24.703 に答える
4

どうやら変更する必要があったのは、5-31 から 5,31 だけでした。

作業例:

if (preg_match('/^[A-Za-z]{1}[A-Za-z0-9]{5,31}$/', "moo123"))
{
    echo 'succeeded';
}
else
{
    echo 'failed';
}
于 2012-11-15T07:19:43.367 に答える
2

これを試して:

if ( !preg_match('/^[A-Za-z][A-Za-z0-9]{5,31}$/', $joinUser) )
于 2012-11-15T07:06:14.720 に答える