【问题标题】:CakePHP Negated RegEx not workingCakePHP 否定的正则表达式不起作用
【发布时间】:2012-10-15 20:55:05
【问题描述】:

我试图强制我的模型的名字是除数字以外的任何字符,但到目前为止它没有按预期工作。当我尝试这个时:

public $validate = array(
    'first_name' => array(
        array(
            'rule' => array('custom', '/^[\d]+/'),
            'message' => 'Please fill in a valid first name'
        )
    )
);

它不起作用,因为我可以将 4 保存为名称。如果我将否定句移到括号内,如下所示:

public $validate = array(
    'first_name' => array(
        array(
            'rule' => array('custom', '/[^\d]+/'), //allow anything but numbers
            'message' => 'Please fill in a valid first name'
        )
    )
);

它也不起作用,因为我可以将 a4 保存为名称。那么如何在不包含两个自定义验证规则的情况下获得两全其美的效果呢?

【问题讨论】:

  • ^ 元字符有两种不同的含义; 1.) 在字符类之外,它是一个零宽度断言(锚点),意思是:“字符串/行的开始”,2.) 在字符类内部,(如果它是第一个字符),它否定了 char 类。

标签: php regex validation cakephp model


【解决方案1】:

/^[^\d]+$/ 允许除数字以外的任何内容

【讨论】:

  • @paulsmith - 是的,否则它将允许非数字字符后跟任何内容...
猜你喜欢
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-08
相关资源
最近更新 更多