简单的PHP正则表达式问题

时间:2010-09-07 18:48:03

标签: php regex

以下内容中效率最高的preg_match正则表达式是什么:

  1. 正则表达式必须与某个字符串匹配(大小写不敏感
  2. 可以跟着[或; 然后其他
  3. 这些是“foo”的测试用例:

    • foo - >好
    • 食物 - >坏
    • FOO; - >不好,之后需要点东西;
    • FOO; bar - >好
    • foo [bar] - >好
    • foo [ - >不好,需要一些事情后]
    • fOo [bar] 1; 2; 3 - >好

    这是我的测试代码:

    <?php
    
    $tests = array();
    $tests[] = 'foo';
    $tests[] = 'food';
    $tests[] = 'foo;';
    $tests[] = 'FOO;bar';
    $tests[] = 'foo[bar]';
    $tests[] = 'foo[';
    $tests[] = 'foo[]';
    $tests[] = 'fOo[bar]1;2;3';
    
    foreach ($tests as $test)
    {
        echo $test, ' --> ';
        $found = preg_match('REGULAR EXPRESSION HERE', $test);
        if ($found === false || $found < 1)
            echo 'bad';
        else
            echo 'ok';
        echo '<br>', PHP_EOL;
    }
    
    ?>
    

2 个答案:

答案 0 :(得分:2)

你可以试试这个正则表达式:

/foo(;.+?|\[.+?\].*?)*$/i

如果您的支架不需要关闭:

/foo([;\[].+?)*$/i

如果括号或分号不能是表达式的最后一部分:

/foo([;\[][^;\[]+)*$/i

全部通过Regex planet传递测试。


资源:

答案 1 :(得分:2)

简单:

/foo($|[[;].)/i