我的观点中有这个代码:
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的方括号之间的正则表达式代码。
提前致谢。
答案 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]$/]');
希望有所帮助