Php 捕获所有正则表达式

Php 捕获所有正则表达式,php,regex,preg-match,catch-all,Php,Regex,Preg Match,Catch All,在我的PHP程序中,我只在运行时定义了一些正则表达式。 我怎样才能编写一个正则表达式来匹配那些匹配不能捕获的所有其他内容 var_dump(preg_match("#^Bob$#", 'Bob')); var_dump(preg_match("#^Alice$#", 'Alice')); 我需要的正则表达式不是^Bob$和^Alice$ 我试着用 var_dump(preg_match("#(?(?=(^Bob$|^Alice$))|^$|.*)#", 'John')); 但是preg_ma

在我的PHP程序中,我只在运行时定义了一些正则表达式。 我怎样才能编写一个正则表达式来匹配那些匹配不能捕获的所有其他内容

var_dump(preg_match("#^Bob$#", 'Bob'));
var_dump(preg_match("#^Alice$#", 'Alice'));
我需要的正则表达式不是
^Bob$
^Alice$

我试着用

var_dump(preg_match("#(?(?=(^Bob$|^Alice$))|^$|.*)#", 'John'));
但是preg_match函数给了我
警告:preg_match():编译失败:条件组在偏移量27处包含两个以上的分支
您使用了语法错误的条件(第一个组以
开头?
),这就是您的警告

但我认为你不需要有条件的正则表达式,试试看

 var_dump(preg_match("#^(?!(Bob|Alice)$).*#", 'John'));
我将锚点
^
移到表达式的最开头,并将
$
移到替换之外,因此它对两个替换都有效

这个正则表达式将匹配每个字符串(不带换行符),而不仅仅是“Bob”或“Alice”