Php Zend_Validate_Regex-仅允许字母、数字和字符-_

Php Zend_Validate_Regex-仅允许字母、数字和字符-_,php,regex,zend-framework,Php,Regex,Zend Framework,所以,我有一个文本字段,它只能包含字母、数字、连字符、点和下划线。我想使用Zend_validate_Regex验证它,但是这个模式不起作用。为什么? /[a-z][A-Z][0-9]-_./ 以下是我的文本元素: $titleSlug = new Zend_Form_Element_Text('title_slug', array( 'label' => 'Title Slug', 'required' => FALSE, 'filters' =>

所以,我有一个文本字段,它只能包含字母、数字、连字符、点和下划线。我想使用Zend_validate_Regex验证它,但是这个模式不起作用。为什么?

/[a-z][A-Z][0-9]-_./
以下是我的文本元素:

$titleSlug = new Zend_Form_Element_Text('title_slug', array(
    'label' => 'Title Slug',
    'required' => FALSE,
    'filters' => array(
        'StringTrim',
        'Null'
    ),
    'validators' => array(
        array('StringLength', FALSE, array(3, 255)),
        array('Regex', FALSE, array('pattern' => '/[a-z][A-Z][0-9]-_./'))
    )
));
这个怎么样:

 /[a-zA-Z]*|\d*|-*|\.*|_*/
这个怎么样:

 /[a-zA-Z]*|\d*|-*|\.*|_*/

您的正则表达式将按顺序匹配包含小写字母、大写字母、数字、破折号、下划线和任何其他字符的字符串。你需要这个:

/^[\w.-]*$/
^和$在字符串的开头和结尾锚定匹配


\w匹配字母、数字和下划线;它们与点和破折号一起构成一个字符类[…],重复零次或多次*。你需要这个:

/^[\w.-]*$/
^和$在字符串的开头和结尾锚定匹配


\w匹配字母、数字和下划线;它们与点和破折号一起构成一个字符类[…],重复零次或多次*

一个字符类就足够了。此外,还需要锚定正则表达式。一个字符类就足够了。另外,您需要锚定正则表达式。只是为了我的备份:在我的情况下,相同的事情不起作用,除非我这样做:数组'variable1'=>'^[\w.-]*$'删除/Tim的解决方案工作得很好。YumYumYum,我相信您需要像这样使用数组'regex',true,array'/^[\w.-]*$/I'。我还修改了Tim的正则表达式,添加了/I以忽略case(仅用于备份):在我的情况下,相同的事情不起作用,除非我这样做:数组'variable1'=>'^[\w.-]*$删除/Tim的解决方案工作得很好。YumYumYum,我相信您需要像这样使用数组'regex',true,array'/^[\w.-]*$/I'。我还修改了Tim的正则表达式,添加/I以忽略该案例