需求很简单:判断输入的字符串,必须由大写字母和数字组成,并且总字符数在5到20之间。我的正则判断这么写:if ( !preg_match('[A-Z0-9]{5,20}', $_name) )
{
echo 'not match';
}我用的是PHP4,但是总是提示:Warning: preg_match() [function.preg-match]: Unknown modifier '{' in /testdec.php on line 26
用ereg()没有这样的问题,但结果总是不对,不知道是正则写错了,还是其他问题?另外,哪里有比较全的正则表达式语法介绍哦,POSIX语法好像要被淘汰了,要用PCRE的是么,请大虾指教!!! 

解决方案 »

  1.   

    preg_match使用的格式不对吧像这样:<?php
    $subject = "abcdef";
    $pattern = '/^def/';
    preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);
    print_r($matches);
    ?>
      

  2.   

    你的正则格式也不对吧/[A-Z0-9]{5,20}/   or #[A-Z0-9]{5,20}#等
      

  3.   

    正则格式不对诶,
     if ( !preg_match('/[A-Z0-9]{5,20}/', $_name) ) 

    echo 'not match'; 

      

  4.   

    google上那个30分钟正则入门, 还有一本书《精通正则表达式》其实都是相对比较全, 因为正则流派多, 各个语言支持又不相同,
      

  5.   

    $$_name ="aaa";
    if ( !preg_match('/[A-Z0-9]{5,20}/', $_name) ) 

    echo 'not match'; 
      

  6.   

    $_name ="aaa"; 
    if ( !preg_match('/[A-Z0-9]{5,20}/', $_name) ) 

    echo 'not match'; exit;
    }
      

  7.   

    preg_match('/^[A-Z0-9]{5,20}$/', $_name)加上开始和结尾