Regex_match для проверки строки из окна выбора в codeigniter - PullRequest
0 голосов
/ 29 марта 2012

У меня есть этот код на мой взгляд:

echo form_label('State', 'state');
$options = array(   
      'No state' => '- Select state -',
      'Alabama' => 'Alabama',
      'Florida' => 'Florida',
      'California' => 'California',

);
echo form_dropdown('state', $options);
echo form_error('state', '<div class="error">', '</div>');

И в моем контроллере это:

$this->form_validation->set_rules('state', 'State', 'required|regex_match[??????]');
if ($this->form_validation->run() == FALSE)
   {
   // VALIDATION ERROR
   $this->load->view('page_registration');
   }
   else
   {
   // VALIDATION SUCCESS
   ....
   ....
   ....

Мой вопрос заключается в том, что печатать внутри regex_match вместо вопросительных знаков, поэтомукогда все остальное вместо состояния Нет выбрано, оно будет успешно выполнено.Если вы выберете Нет состояния, тогда страница регистрации перезагрузится и отобразит ошибку.

Мне нужен код регулярного выражения в квадратных скобках для regex_match.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Почему вы не положили ноль в массив

$options = array(   
      '0' => '- Select state -',
      'Alabama' => 'Alabama',
      'Florida' => 'Florida',
      'California' => 'California',

);

И тогда в вашем контроллере вы можете использовать

$this->form_validation->set_rules('state', 'State', 'required|alpha');

EDIT:

Если вы хотите придерживаться регулярных выражений и подтверждать НЕ АЛЬФА, вы можете использовать что-то вроде этого

$this->form_validation->set_rules('state', 'state', 'trim|required|regex_match[/^[a-zA-Z]$/]');

Надеюсь, это поможет

2 голосов
/ 29 марта 2012

Попробуйте: /^(?!(No state)).*$/ (Я завернул регулярное выражение для pregmatch, извините, что забыл ранее)

Переведено: Строка не должна начинаться с «Нет состояния».(поэтому «Нет состояния, мой друг» потерпит неудачу)

Результат:

preg_match('/^(?!(No state)).*$/', 'No state', $matches);
array()

preg_match('/^(?!(No state)).*$/', 'Alabama', $matches);
array ( 0 => 'Alabama' )

Регулярные выражения полезны, поэтому попробуйте изучить синтаксис (Google для учебника, есть много доступных)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...