$str = "abc";
if(ereg("\w", $str))
{
    echo "匹配";
} else {
    echo "不匹配";
}为什么输出"不匹配"?abc里第一个字母a就匹配\w了,是不是应该返回true了,为什么返回了false?
补充一个问题
正则"<p>.*</p>" 和 正则"<p>(.*)</p>" 有什么不同么? 小括号起了什么作用?请举个例子说说吧。

解决方案 »

  1.   

    $str = "abc"; if(ereg("[a-z]", $str)) {  echo "匹配"; } else {  echo "不匹配"; } 
      

  2.   

    使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ereg() 更快的替代方案。 
    <?php
    $str = "abc";
    if(preg_match("/\w/", $str))
    {
    echo "匹配";
    } else {
    echo "不匹配";
    }
    ?>
      

  3.   


    谢谢大家. 我想知道 为什么 "[a-z]" 能匹配, "\w" 却不能匹配呢?
    jnkc朋友并没有写 "([a-z])*" 而只是写 "[a-z]" 结果却是匹配的,可我用"\w"为什么不能匹配呢?
      

  4.   

    这个是我学习正则表达,做的笔记,可能对你有帮助正则表达式
    字符串头部:^
    <?php echo ereg(“^hello”,”hello world!”); ?>字符串尾部:$
    <?php echo ereg(“bye$”,”goodbye”); ?>任意的单个字符:.
    <?php echo ereg(“.”,”goodbye”); ?>限制匹配字符数量:{}
    <?php echo ereg(“.{5}$”,”12345”); ?> //至少在尾部出现5个任意字符<?php echo ereg(“a{1,3}$”,”aaa”); ?> //至少在尾部出现1-3个字符a零次或多次重复字符:*
    <?php echo ereg(“t*”,”tom”); ?> //t可以出现零次或重复,任何字符都返回 true一次或多次重复字符:+
    <?php echo ereg(“t+”,”tom”); ?> //t至少要出现一次零次或一次重复字符:?
    <?php echo ereg(“t?”,”tom”); ?> //t只能出现一次空格字符:[[:space:]]
    <?php echo ereg("hello[[:space:]]?world","hello world"); ?>模式分组 []
    <?php echo ereg("^[a-z]+$","hello"); ?> //a到z的所有小写字符
    <?php echo ereg("^[a-zA-Z]+$","hello"); ?> //a到z的所有大小写字符词语分组 |
    <?php echo ereg("^(张|李).+$","张三"); ?> //张或李开头,后面至少一个字符特殊字符(字符专义) \
    <?php echo ereg("^[a-zA-Z]+\|[a-zA-Z]+$","a|b"); ?>英文字母开头,中间|字符,尾部英文字母结尾