Проблема с использованием правила Laravel & Regex (OR)

У меня небольшая проблема с моими правилами Laravel и регулярным выражением:

В основном правило представляет собой массив как таковой:

'room'=>'required|alpha_num|min:2|max:10', 

Проблема, с которой я сталкиваюсь, – это использовать регулярное выражение и | (или), например:

 'cid'=>'required|regex:/^((comp)|(soen)|(engr)|(elec))\d{3}$/i', 

Я получаю сообщение об ошибке сервера:

 ErrorException preg_match(): No ending delimiter '/' found 

Я предполагаю, что preg_match останавливается при первом | внутри /.../ .

Есть ли способ написать вышеприведенный код, чтобы заставить его работать?

Полный код:

 public static $rules = array( 'cid' => array('required', 'regex:/^((comp)|(soen)|(engr)|(elec))\d{3}$/i'), 'description'=>'required|regex:/^[A-Za-z \t]*$/i|min:3|unique:courses', 'credits'=>'required|regex:/^\d+(\.\d)?$/' ); 

http://laravel.com/docs/validation#rule-regex

регулярное выражение: шаблон

Поле под проверкой должно соответствовать данному регулярному выражению.

Примечание. При использовании шаблона регулярного выражения может потребоваться указать правила в массиве вместо> использования разделителей каналов, особенно если регулярное выражение содержит символ канала.

Чтобы уточнить: вы сделали бы что-то подобное

 $rules = array('test' => array('size:5', 'regex:foo')); 

Вы должны использовать array вместо разделения правил, используя | :

 'cid' => array('required', 'regex:/^((comp)|(soen)|(engr)|(elec))\d{3}$/i') 

Уровень вздутия трубы ( | ) доступен в вашем шаблоне регулярных выражений, поэтому он противоречит разделителю. Другой ответ уже заявил об этом.