PHP的正则表达式,我为什么就是不对!!

来源:百度知道 编辑:UC知道 时间:2024/05/06 16:41:52
我的PHP是这么写的:
<?php
$userName = "我123";

if(ereg('^([a-zA-Z]|[\u4e00-\u9fa5])([a-zA-Z0-9_]|[\u4e00-\u9fa5])+',$userName))
{
print "successed!";
}
else
{
print "failure!";
}
?>

这个正则表达式是匹配字母或者汉字开头,并且整个字符串只能由字母,数字,_和汉字组合而成,两位以上的。我在MTracer工具里面匹配是没有问题的。但是放到PHP里面来就郁闷了,完全没效果了!不知道哪写错了,请高手指点!

再着
$i = preg_match('^([a-zA-Z]|[\u4e00-\u9fa5])([a-zA-Z0-9_]|[\u4e00-\u9fa5])+$',$userName);

print "i--------------".$i."<br>" ;
这段代码直接报错,报错如下:
Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in D:\AppServ\www\old\zzbds.php on line 4
很不明白,忘高手指点上面两个问题!谢谢!
不好意思,上面我写漏了,正则表达式应该是
^([a-zA-Z]|[\u4e00-\u9fa5])([a-zA-Z0-9_]|[\u4e00-\u9fa5])+$

我自己研究了下最后得出preg_match("/^[a-zA-Z\x80-\x

这个问题有点难度等以后在回答现在还没有达到揪错的能力

你把^和$去掉就ok了。
建议使用preg_match,比ereg匹配速度快。
preg_match("/([a-zA-Z]|[\x4e00-\x9fa5])([a-zA-Z0-9_]|[\x4e00-\x9fa5])+/i",$userName)