Çizgi ile alfanümerik olarak adını doğrulamak

6 Cevap php

Benim kayıt sayfada ben aynı zamanda opsiyonel çizgi ile, sadece alfanümerik olarak adlarını doğrulamak gerekir. Ben bu ile geldim:

function validate_alphanumeric_underscore($str) 
{
    return preg_match('/^\w+$/',$str);
}

Hangi tamam iş gibi görünüyor, ama ben bir regex uzman değilim! Herkes herhangi bir sorun nokta mı?

6 Cevap

İşte PHP ctype_alnum izin karakterlerin dizisi ile birlikte kullanarak dize doğrulamak için özel bir fonksiyonu bulunuyor:

<?php

$str = "";
function validate_username($str) {

  // each array entry is an special char allowed
  // besides the ones from ctype_alnum
  $allowed = array(".", "-", "_");

  if ( ctype_alnum( str_replace($allowed, '', $str ) ) ) {
    return $str;
  } else {
    $str = "Invalid Username";
    return $str;
  }
}

?>

denemek

function validate_alphanumeric_underscore($str) 
{
    return preg_match('/^[a-zA-Z0-9_]+$/',$str);
}

Bana iyi görünüyor. Hiçbir çizgi yerleştirilmesi için gereksinimi, bu yüzden "username_" ve "___username" would geçiş hem de olun unutmayın.

Kendi çözüm gayet.

preg_match karakter sınıfı \w tam olarak neye ihtiyacınız maç için tanımlanmış olan Perl gibi normal ifadeler kullanır:

\w - bir "kelime" karakteri (alfanümerik plus "_") Maç

(source)

Ben sadece çizgi birleştirme gibi izin Gumbo ikincil regex almak, ama bir + sonra eklersiniz _ böylece kullanıcı, "special__username" gibi sadece küçük bir çimdik olabilir.

/^[A-Za-z][A-Za-z0-9]*(?:_+[A-Za-z0-9]+)*$/