【已解决】表单验证正则表达式规则获取失败
本帖最后由 pepsi8 于 2016-7-15 00:32 编辑验证规则如下:
$this->form_validation->set_rules('color', '标题颜色', 'regex_match[/^#({3}|{6})$/]');
执行时,总是提示:
Severity: Warning
Message:preg_match(): No ending delimiter '/' found
Filename: libraries/Form_validation.php
Line Number: 1082
于是,在1082行前面加上 exit($regex);
输出的正则表达式是 /^#(可见正则获取不正确,不知道是我验证规则写的不对,还是此处有bug?求解。
此问题已解决,感谢 燃雲 的指点!遇到这种情况,只需把验证规则以数组形式传递即可。如下:
$this->form_validation->set_rules('color', '标题颜色', array('regex_match[/^#({3}|{6})$/]'));
简单看源码,问题似乎在'|'。
试拿走'|',是否仍报错? 燃雲 发表于 2016-7-2 20:29
简单看源码,问题似乎在'|'。
试拿走'|',是否仍报错?
谢谢,去掉竖线确实可以解决问题。
改为如下验证规则:
$this->form_validation->set_rules('color', '标题颜色', 'regex_match[/^#{3}(){3})?$/i]');
这样就可以通过了。
虽然现在没问题了,但我还是觉得这不是真正的解决方法,毕竟竖线本来就是正则的一部分,也不见得所有带竖线的正则都可以改成不带竖线的。 pepsi8 发表于 2016-7-3 16:22
谢谢,去掉竖线确实可以解决问题。
改为如下验证规则:
$this->form_validation->set_rules('color', '标 ...
参数若是string,set_rules会按'|'进行分拆,参数若是array便可避免处理。可试试以array送入参数。
可参考手册相关说明。 燃雲 发表于 2016-7-5 15:24
参数若是string,set_rules会按'|'进行分拆,参数若是array便可避免处理。可试试以array送入参数。
可参 ...
谢谢,你的方法正是我需要的,经验证可行。手册我看过了,因为我水平不行,有些地方只是看了,没很好的理解。
页:
[1]