对代码点火器中选择框中的验证字符串进行Regex_match


Regex_match for validationg string from selectbox in codeigniter

我的视图中有以下代码:

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的方括号之间的正则表达式代码。

提前谢谢。

为什么不在数组中放入一个零

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

然后在你的控制器中,你可能会使用

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

编辑:

如果你想坚持使用regex并验证NOT ALPHA,你可以使用类似于的东西

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

希望它能帮助

Try:/^(?!(No state)).*$/(我为pregmatch包装了regexp,很抱歉我之前忘记了)

翻译:字符串不应以"无状态"开头。(所以"没有一个州我的朋友"会失败)

结果:

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

Regex很有用,所以试着学习语法(谷歌上有很多教程)