开发者

Simple PHP regular expression question

开发者 https://www.devze.com 2023-01-15 18:16 出处:网络
What\'s the most efficient preg_match regular expression for the following: The regular expression must match a certain string (case insensitive)

What's the most efficient preg_match regular expression for the following:

  1. The regular expression must match a certain string (case insensitive)
  2. Can be followed by [ or ; and then something else

These are the test cases for "foo":

  • foo --> good
  • food --> bad
  • foo; --> bad, need something after ;
  • FOO;bar --> good
  • foo[bar] --> good
  • foo[ --> bad, need something after ]
  • fOo[bar]1;2;3 --> good

This is my test code:

<?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;
}开发者_开发知识库

?>


You can try this regex :

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

If your bracket doesn't need to be closed :

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

If your bracket or semicolon must not be the last part of your expression :

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

All passed the tests with Regex planet.


Resources :

  • www.regular-expressions.info


Simple:

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

精彩评论

暂无评论...
验证码 换一张
取 消