要实现匹配一级、二级域名、带一层子目录的URL
以下的正则表达式在javascript中调试通过了:
<script type="text/javascript">
function check(Url){
var tta=/^[a-z0-9]+[\.\w-]*[\w-]+\.(com|net|org|gov|cc|biz|info|cn)(\.(cn|hk))*([/]+[\w-]+){0,1}([/]{0,1}$)/;
var b_chinese=Url.match(tta);
alert (b_chinese);
}
</script>但在PHP中却死活不行:
这样写不行:
if (!ereg('^[a-z0-9]+[\.\w-]*[\w-]+\.(com|net|org|gov|cc|biz|info|cn)(\.(cn|hk))*([/]+[\w-]+){0,1}([/]{0,1}$)',$Url)) die ('err');
else die ('OK');这样写也不行:
if (!ereg('^[a-z0-9]+[\\.\\w-]*[\\w-]+\\.(com|net|org|gov|cc|biz|info|cn)(\\.(cn|hk))*([/]+[\\w-]+){0,1}([/]{0,1}$)',$Url)) die ('err');
else die ('OK');
请教错在哪里,应该怎么写

解决方案 »

  1.   

    不行啊,用preg_match就直接出错了:
    Warning: preg_match() [function.preg-match]: Unknown modifier ']' 
    检查过后是错在([/]+[\w-]+){0,1},但在javascript中这样写就没问题用ereg就不会运行出错,但无法实现匹配。
      

  2.   

    直接晕倒,一个个条件地加,终于找到了问题所在。PHP的ereg把\w当成了字符w 而不是a-z0-9_
      

  3.   

    真奇怪,经修改过的表达式用ereg时通过了,但用preg_match还是报错,决定还是用ereg了。不管怎样还是要谢谢zhoupuyue的答复。
    应该是正则表达式有多个不同的版本吧?才疏学浅,大家见笑了。结帖。