Regex_match用于验证来自codeigniter中选择框的g字符串

时间:2012-03-29 17:24:11

标签: php regex 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内输入什么而不是问号,所以当选择其他而不是No状态时,它会成功。如果选择“无状态”,则会重新加载注册页面并显示错误。

我需要regex_match的方括号之间的正则表达式代码。

提前致谢。

2 个答案:

答案 0 :(得分:2)

尝试:/^(?!(No state)).*$/(我为pregmatch包装了正则表达式,抱歉我之前忘了)

已翻译:字符串不应以“无状态”开头。 (所以'没有我的朋友'会失败)

结果:

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

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

正则表达式是有用的,所以尝试学习语法(谷歌的教程,有很多可用的)

答案 1 :(得分:2)

为什么不在数组中放置零

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

);

然后在你的控制器中你可以使用

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

编辑:

如果您想坚持使用正则表达式并验证NOT ALPHA,您可以使用类似这样的内容

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

希望有所帮助