我正在尝试在像这样的zend表单元素上使用正则表达式验证器 -
$textarea = $this->createElement('text','scores');
$textarea->setLabel('Enter a comma separated list of numbers');
$textarea->setDecorators(
array('ViewHelper',
array('HtmlTag',
array('tag' => 'div',
'class'=>'scores'
)
)
)
);
$textarea->addDecorator('Label')
->setRequired(true)
->addFilter(new Zend_Filter_StringTrim())
->addValidator('regex',true,array('^\d{1,3}([,]\d{1,3})*$'))
->addErrorMessage('Please enter a comma separated list of numbers');
我只是想验证文本区域是否包含以逗号分隔的数字列表。
目前我在使用模式时出现“内部错误”^ \ d {1,3}([,] \ d {1,3})* $'“。
我想正则表达式有问题吗?
任何帮助将不胜感激:)
感谢, 皮特
答案 0 :(得分:0)
尝试转义反斜杠:
'^\\d{1,3}(,\\d{1,3})*$'
您不需要逗号周围的括号。
此外,您可能希望允许数字和分隔符之间的空格:
'^\\s*\\d{1,3}(\\s*,\\s*\\d{1,3})*\\s*$'
答案 1 :(得分:0)
您需要为开始和结束正则表达式添加符号。例如:
->addValidator('regex',true,array('#^\\d{1,3}([,]\\d{1,3})*$#'))
答案 2 :(得分:0)
是的,你需要分隔符。但不要逃避你的斜线:)
答案 3 :(得分:0)
恕我直言,你错过了斜线" /"在你的正则表达式结束时。我不是专家,但这对我有用:
->addValidator(new Zend_Validate_Regex('/^[a-zA-Z0-9][a-zA-Z0-9 ._-]{1,31}/'));