php写出一个验证用户ID的正则表达式

<form action="#" name="form2" method="post">
请再次输入用户ID:<input type="text" name="userid" id="userid">
<input type="submit" value="提交">
</form>
<?php
$userid=$_POST['userid'];
$pattern="/[.a-zA-Z0-9_-]{2,24}/";

if(preg_match($pattern,$userid)){
echo "您输入的用户ID".$userid."是正确的";
}else{
echo "您输入的用户ID".$userid."不是正确的";
}
?>

但是输入的时候2位以后有等号,也是正确的!问题在哪?高手帮帮忙?
写出一个验证用户ID(2—24位,可以是中文、英文、数字、减号、下划线及
点号)的正则表达式
楼下几位都不对啊!我自己查了改成:/^[\x80-\xff_a-zA-Z0-9-_.]{2,24}$/
现在能判断中文了!输入其他非中文字符能正确判断,但是中文只输入了一个字,没有大于2位数,都说是正确的,奇怪了!!!求救啊!!!

"/^[^\x{4e00}-\x{9fa5}A-Za-z0-9_-\.]+$/u"
用preg_match函数
对于uft-8验证,gbk的也差不多,就中文验证可能不一样
2到24位就不好说了,尤其中文,在utf-8下,字符位数不一样,php中用使用mb_strlen来计算长度,中文都算一个字符,在使用mb_strlen函数时首先应该设置编码字符集,mb_internal_encoding('utf-8'),或者,在mb_strlen中第二个参数给出编码集
中文utf-8在mysql中也是算一个字符
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-07
应该preg_grep不是preg_match,用法不同
第2个回答  2010-06-08
抱歉问题补充没看清楚
一般(gb_2312)一个中文字占两个字符所以可以这么写:
$pattern="/^(?:[\x{4e00}-\x{9fa5}]{4,48}|[A-Za-z0-9_\-\.]{2,24})$/";

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网