正则表达式 - 未知修饰符'('在[重复]中

This question already has an answer here:

I had this regular expression:

preg_match("|[\|()<>%*+=]|(=)+(!)|[-]{2}|", $status, $array);

that generates this warning

Warning: preg_match(): Unknown modifier '(' in...

I know that is a problem of \ but I don't know where to put them.

</div>

The problem is that you are using | as the delimiter for the pattern, so the second | ends the pattern and the ( is interpreted as a modifier. Do one of these, depending on if you need the | at the beginning and end:

preg_match("/|[\|()<>%*+=]|(=)+(!)|[-]{2}|/", $status, $array);
preg_match("/[\|()<>%*+=]|(=)+(!)|[-]{2}/", $status, $array);

The is some problems... Let see:

Yours:

  "|[\|()<>%*+=]|(=)+(!)|[-]{2}|"
   ^ first problem not needed as is an OR and there is nothing before it
       ^ you have to scape the parentesis all of it
            ^ you have to scape the asterisk
                               ^unecessary there is nothing after

So the result would be:

  "/[\|\(\)<>%\*+=]|(=)+(!)|[-]{2}/"