简单的preg_match与否定和组

时间:2013-11-11 20:39:18

标签: php preg-match

我有一个字符串,其中有效输入为's'''t'或'b'或字符串'all'。我试图知道该条目何时无效。似乎要求否定来测试坏字符串。结果应该是:

preg_match('/[^satb(all)]/', 's')  ==> should be false (and is)
preg_match('/[^satb(all)]/', 'sall')  ==> should be false (and is)
preg_match('/[^satb(all)]/', 'alsl')  ==> should be true but is not (the l's are not part of 'all')

我尝试了很多不同的组合,但我无法做到。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

字符类仅匹配单个字符。 我想你想要的是:

if ( preg_match('/^(all|[satb]+)$/', $string) ) {
  // string is valid, do something
} else {
  // string is invalid, do something
}

这与以下内容匹配:

$string = "all";
$string = "s";
$string = "a";
$string = "t";
$string = "b";