我使用codeigniter 3.x
进行正则表达式验证$this->form_validation->set_rules('FieldName','FriendlyName','trim|required|regex_match[/^([a-zA-Z]{6}[0-9]{2}[a-zA-Z]{1}[0-9]{2}[a-zA-Z]{1}[0-9]{3}[a-zA-Z]{1})$|^([0-9]{11})$/]');
此正则表达式用于获取财政代码或意大利增值税代码(或者)
我收到此错误
严重性:警告消息:preg_match():没有结束分隔符' /'结果
问题是什么?我看到' /'在我的正则表达式调用的开头和结尾处的char ...
由于
答案 0 :(得分:0)
您需要以不同的方式处理正则表达式部分,因为管道(|)正在创建问题。
当Codeigniter尝试将此行转换为表单规则数组
时$this->form_validation->set_rules(
'FieldName',
'FriendlyName',
'trim|required|regex_match[/^([a-zA-Z]{6}[0-9]{2}[a-zA-Z]{1}[0-9]{2}[a-zA-Z]{1}[0-9]{3}[a-zA-Z]{1})$|^([0-9]{11})$/]');
Codeigniter会得到这个: -
Array
(
[0] => trim
[1] => required
[2] => regex_match[/^([a-zA-Z]{6}[0-9]{2}[a-zA-Z]{1}[0-9]{2}[a-zA-Z]{1}[0-9]{3}[a-zA-Z]{1})$
[3] => ^([0-9]{11})$/]
)
但正确的转换应该是这样的: -
Array
(
[0] => trim
[1] => required
[2] => regex_match[/^([a-zA-Z]{6}[0-9]{2}[a-zA-Z]{1}[0-9]{2}[a-zA-Z]{1}[0-9]{3}[a-zA-Z]{1})$^([0-9]{11})$/]
)
因此应用此正则表达式时,不应在正则表达式部分中使用 | 。