正则表达式与2个不同的字符串不匹配

时间:2013-01-06 02:30:01

标签: php regex

好的,这个正则表达式似乎与我正在测试它的网址中的 action = admin 不匹配。但我也需要排除 action = dream 。如何将其添加到以下正则表达式...

'~\b((?!\?action=admin)[-a-zA-Z0-9+&@#/%?=\~_|!:,.;\[\]]*[-a-zA-Z0-9+&@#/%=\~_|\[\]]?)([^-a-zA-Z0-9+&@#/%=\~_|])~'

尝试了以下内容......

'~\b((?!\?action=(admin|dream))[-a-zA-Z0-9+&@#/%?=\~_|!:,.;\[\]]*[-a-zA-Z0-9+&@#/%=\~_|\[\]]?)([^-a-zA-Z0-9+&@#/%=\~_|])~'

但这会给人不好的结果......

1 个答案:

答案 0 :(得分:1)

您的问题是您希望admin|dream没有实际捕获值(这是您的第二个示例所做的)。为此,您希望使用(?: ),如下所示:

(?!\?action=(?:admin|dream))