所以我正在设计注册页面并检查用户名是否为字母数字。
else if(!eregi("^([0-9a-z])+$", $subuser)){
$form->setError($field, "* Username not alphanumeric");
我用它来做到这一点。我有什么方法可以包含下划线(_),短划线( - )和空格? 感谢
答案 0 :(得分:2)
您可以使用:
else if(!eregi("^([0-9a-z_ -])+$", $subuser)){
您只需要向char类添加underscore(_)
,hyphen (-)
和space( )
。在三个连字符中,连字符在char类中具有特殊含义,但仅如果它在两侧被char包围。因此,为了避免这种情况,您可以在开头或结尾处包含它。你也可以将它包含在中间并逃脱它。
所以以下内容也是有效的:
else if(!eregi("^([-0-9a-z_ ])+$", $subuser)){
else if(!eregi("^([0-9a-z_\- ])+$", $subuser)){
答案 1 :(得分:2)
最好使用preg_match语法学习,因为这是标准的正则表达式检查。
它应该是这样的:
$bValid = preg_match("/^[\w\d-_]*$/", $sUsername);
关于正则表达式的羽毛阅读检查阅读http://www.php.net/manual/en/intro.pcre.php
并在preg_match和ereg之间进行简短比较,请参阅http://answers.yahoo.com/question/index?qid=20080327071915AAO0O2w
答案 2 :(得分:0)
你可以这样使用
if(!eregi("^([0-9a-z-_ ])+$", $subuser))
你可以在这个括号 [0-9a-z-_] 中添加尽可能多的特殊字符,但请确保某些需要通过(斜杠)转义