小妹求救用户名和密码的php正则表达式判断 用户名 /\A_|_\Z|[^\x{4e00}-\x{9fbf}a-z0-9_]+/密码 /[^A-z0-9]+/字串长度自己另外判断吧全是数字也一样用其他函数判断 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哇~~试过了,不行啊,我是这样测试的<?phpif (ereg("/\A_|_\Z|[^\x{4e00}-\x{9fbf}a-z0-9_]+/","雪儿"))echo "ok";else echo "no";?>输出是no,而且还有错误;Warning: ereg() [function.ereg]: REG_ERANGE in...怎么办啊????^_^ 1.这是匹配错误的情况,不是正确的情况2.这是perl兼容的正则,要用preg相关函数 snmr_com(麒麟厍人) ,您好啊,我刚刚用了 preg_match,可以出现下面错误:preg_match() [function.preg-match]: Compilation failed: character value in \x{...} sequence is too large at offset您能再教教我吗,嗯? 你的php版本?估计还不支持unicode判断,这就很麻烦了 PHP Version 5.2.0支持吗?snmr_com(麒麟厍人)^_^ mm try//1.===========================$d = '雪儿';if(preg_match('/^(?!\_+)[a-z0-9\x80-\xff\_]{3,16}$/',$d) && substr($d,-1) != '_' && strlen((int)$d)!=strlen($d)) echo "done<br>";else echo 'not done<br>';//2.=========================================$sd = 'sdfsssj';if(preg_match('/^[0-9a-zA-Z]{6,16}$/',$sd)) echo 'pass';else echo 'no pass'; 呃?!漏了修正符“u”另外,如果原字符串不是utf-8编码的,要把原字符串转为utf-8再判断<?php$str=iconv ("GB2312","UTF-8","雪儿_");preg_match_all("/\A_|_\Z|[^a-z0-9_\x{4e00}-\x{9fbf}]+/u",$str, $array);echo "<pre>";print_r($array);?>如果入库的编码不是utf-8,就要分开转换,不要把原来的替换反正之检测一个utf-8的字串,否则很难判断中文还有一点上面这个是纯汉字(例如“青の空”也是不能通过的) 嗯,谢谢楼上的两位哥哥,snmr_com(麒麟厍人) 和foolbirdflyfirst(what the hell is going on?) (哇,你的名字好长的说,嘿嘿)我先测试一下哈,可以的话我就买单了哦,一个给你们十分可以吗,嘿嘿 \x80-\xff这个不能确定是中文,shift-jis(日文)/euc-kr(韩文)或其他双字节语言都是使用这一范围的 foolbirdflyfirst(what the hell is going on?) 写的要详细些,snmr_com(麒麟厍人)的也很好的,可是没有字符长度还有不能全为数字的判断,偶又不会修改,偶笨笨的,只会拿来就用,麒麟能帮我写完整吗,就按照我上面提到的用户名和密码的要求,可以吗?~~ ^_^,大家可能都在忙。中文匹配是个问题,不妨google一下多了解一下。 嗯,我会好好努力的,谢谢哥哥们哈,foolbirdflyfirst(what the hell is going on?) ~~ 哈哈,我结帐了哈^_^,snmr_com(麒麟厍人) ( ) 和foolbirdflyfirst(what the hell is going on?) 各得十分哈,谢谢GG们的帮助,加油,嘿嘿。。 关于form表单action后取值问题 急等 关于PHP使用数据库问题 php 并发问题 深圳:现有一PHP+MySql 网站项目,急招深圳PHP程序员 如何用php上传一个固定的简单文件? 对于判断多项选择,请教有没有更好的做法? html问题 菜鸟问题,如何在Mysql数据库中不添加重复的数据? fastboard.org没了! 50分求助聊天室熟读问题,有帮忙的请进,解决马上给分,谢谢 新闻系统,首页幻灯图片新闻。
<?php
if (ereg("/\A_|_\Z|[^\x{4e00}-\x{9fbf}a-z0-9_]+/","雪儿"))
echo "ok";
else
echo "no";
?>输出是no,而且还有错误;Warning: ereg() [function.ereg]: REG_ERANGE in...
怎么办啊????^_^
2.这是perl兼容的正则,要用preg相关函数
preg_match() [function.preg-match]: Compilation failed: character value in \x{...} sequence is too large at offset您能再教教我吗,嗯?
支持吗?snmr_com(麒麟厍人)^_^
$d = '雪儿';
if(preg_match('/^(?!\_+)[a-z0-9\x80-\xff\_]{3,16}$/',$d) && substr($d,-1) != '_' && strlen((int)$d)!=strlen($d)) echo "done<br>";
else echo 'not done<br>';//2.=========================================
$sd = 'sdfsssj';
if(preg_match('/^[0-9a-zA-Z]{6,16}$/',$sd)) echo 'pass';
else echo 'no pass';
另外,如果原字符串不是utf-8编码的,要把原字符串转为utf-8再判断<?php
$str=iconv ("GB2312","UTF-8","雪儿_");
preg_match_all("/\A_|_\Z|[^a-z0-9_\x{4e00}-\x{9fbf}]+/u",$str, $array);
echo "<pre>";
print_r($array);
?>如果入库的编码不是utf-8,就要分开转换,不要把原来的替换
反正之检测一个utf-8的字串,否则很难判断中文还有一点上面这个是纯汉字(例如“青の空”也是不能通过的)