1

名前に不正な文字が含まれているかどうかを確認する正規表現があります。使用できる文字は、0 ~ 9、az、AZ、ミドルスコア (-)、およびアンダースコア (_) です。

これが機能です

function validate_playername($playername){
    if (preg_match('/^[0-9A-Z-_]$/i',$playername)) {
        return true;
    } else{
        return false;
    }

}

関数はこのように呼び出されます

if (validate_playername($addplayer)) {
    echo "valid player Name";
} else {
    echo "Invalid Player Name";
}

しかし、velocity28 のような正しい名前を入力すると、無効なプレイヤー名として返されます。私の正規表現は間違っていますか?

4

2 に答える 2

5

/^[0-9A-Z-_]$/i1 文字のみに一致します。

+複数の文字に一致するように追加します。

'/^[-0-9A-Z_]+$/i'
  • 先頭に移動-しました。

アップデート

Enissay がコメントしたように、正規表現は次のように簡略化できます\w

'/^[-\w]+$/'
于 2013-08-21T13:40:06.547 に答える
0

文字クラスでリテラルのマイナス記号を使用するには、バックスラッシュでエスケープする必要があります。

   function validate_playername($playername){
    if (preg_match('/^[0-9A-Z\-_]$/i',$playername)) {
        return true;
    } else{
        return false;
    }

   }

詳細については、 http://php.net/manual/de/regexp.reference.character-classes.phpを参照してください。

マイナス記号を文字範囲定義の一部にできない位置に移動することもできます。たとえば、文字クラスの最初の文字にします。

于 2013-08-21T13:43:26.243 に答える