代码之家  ›  专栏  ›  技术社区  ›  Kirzilla

如何检查用户名仅包含英文字母、标点符号和数字?

php
  •  1
  • Kirzilla  · 技术社区  · 14 年前

    如何检查用户名仅包含英文字母、标点符号和数字?

    3 回复  |  直到 14 年前
        1
  •  5
  •   Artefacto    14 年前
    preg_match('/^[a-z0-9\p{P}]*$/i', $subject);
    

    这会回来的 1 如果 $subject 0 .

        2
  •  3
  •   Weboide    14 年前

    <?php
     $username1 = 'user.03';
     $username2 = 'c@fé';
    
     if(preg_match('/[^0-9A-Z.!`&\'-]/i',$username1))
       echo 'fail';
     else
       echo 'pass';
    
     if(preg_match('/[^0-9A-Z.!`&\'-]/i',$username2))
       echo 'fail';
     else
       echo 'pass';
    ?>
    

    这将拒绝任何不是的字符:数字、普通字母(不带重音)或。!`&'-

        3
  •  2
  •   NikiC    14 年前

    对于微型优化装置:

    !isset($username[strcspn($username, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.!?:`&\'"-')]);
    

    (不要用那个!)

    (想知道它比RegExp快多少…)