CRegularExpressionValidator
| 包 | system.validators | 
|---|---|
| 继承 | class CRegularExpressionValidator » CValidator » CComponent | 
| 可用自 | 1.0 | 
| 源码 | framework/validators/CRegularExpressionValidator.php | 
CRegularExpressionValidator validates that the attribute value matches to the specified regular expression.
You may invert the validation logic with help of the not property (available since 1.1.5).
公共属性
| 属性 | 类型 | 描述 | 被定义在 | 
|---|---|---|---|
| allowEmpty | boolean | whether the attribute value can be null or empty. | CRegularExpressionValidator | 
| attributes | array | list of attributes to be validated. | CValidator | 
| builtInValidators | array | list of built-in validators (name=>class) | CValidator | 
| enableClientValidation | boolean | whether to perform client-side validation. | CValidator | 
| except | array | list of scenarios that the validator should not be applied to. | CValidator | 
| message | string | the user-defined error message. | CValidator | 
| not | boolean | whether to invert the validation logic. | CRegularExpressionValidator | 
| on | array | list of scenarios that the validator should be applied. | CValidator | 
| pattern | string | the regular expression to be matched with | CRegularExpressionValidator | 
| safe | boolean | whether attributes listed with this validator should be considered safe for massive assignment. | CValidator | 
| skipOnError | boolean | whether this validation rule should be skipped when there is already a validation error for the current attribute. | CValidator | 
公共方法
| 方法 | 描述 | 被定义在 | 
|---|---|---|
| __call() | Calls the named method which is not a class method. | CComponent | 
| __get() | Returns a property value, an event handler list or a behavior based on its name. | CComponent | 
| __isset() | Checks if a property value is null. | CComponent | 
| __set() | Sets value of a component property. | CComponent | 
| __unset() | Sets a component property to be null. | CComponent | 
| applyTo() | Returns a value indicating whether the validator applies to the specified scenario. | CValidator | 
| asa() | Returns the named behavior object. | CComponent | 
| attachBehavior() | Attaches a behavior to this component. | CComponent | 
| attachBehaviors() | Attaches a list of behaviors to the component. | CComponent | 
| attachEventHandler() | Attaches an event handler to an event. | CComponent | 
| canGetProperty() | Determines whether a property can be read. | CComponent | 
| canSetProperty() | Determines whether a property can be set. | CComponent | 
| clientValidateAttribute() | Returns the JavaScript needed for performing client-side validation. | CRegularExpressionValidator | 
| createValidator() | Creates a validator object. | CValidator | 
| detachBehavior() | Detaches a behavior from the component. | CComponent | 
| detachBehaviors() | Detaches all behaviors from the component. | CComponent | 
| detachEventHandler() | Detaches an existing event handler. | CComponent | 
| disableBehavior() | Disables an attached behavior. | CComponent | 
| disableBehaviors() | Disables all behaviors attached to this component. | CComponent | 
| enableBehavior() | Enables an attached behavior. | CComponent | 
| enableBehaviors() | Enables all behaviors attached to this component. | CComponent | 
| evaluateExpression() | Evaluates a PHP expression or callback under the context of this component. | CComponent | 
| getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent | 
| hasEvent() | Determines whether an event is defined. | CComponent | 
| hasEventHandler() | Checks whether the named event has attached handlers. | CComponent | 
| hasProperty() | Determines whether a property is defined. | CComponent | 
| raiseEvent() | Raises an event. | CComponent | 
| validate() | Validates the specified object. | CValidator | 
受保护的方法
| 方法 | 描述 | 被定义在 | 
|---|---|---|
| addError() | Adds an error about the specified attribute to the active record. | CValidator | 
| isEmpty() | Checks if the given value is empty. | CValidator | 
| validateAttribute() | Validates the attribute of the object. | CRegularExpressionValidator | 
属性详情
allowEmpty
属性
public boolean $allowEmpty;
whether the attribute value can be null or empty. Defaults to true, meaning that if the attribute is empty, it is considered valid.
not
属性
(自版本 v1.1.5 可用)
public boolean $not;
whether to invert the validation logic. Defaults to false. If set to true, the regular expression defined via pattern should NOT match the attribute value.
pattern
属性
public string $pattern;
the regular expression to be matched with
方法详情
clientValidateAttribute()
方法
(自版本 v1.1.7 可用)
| 
public string clientValidateAttribute(CModel $object, string $attribute) | ||
| $object | CModel | the data object being validated | 
| $attribute | string | the name of the attribute to be validated. | 
| {return} | string | the client-side validation script. | 
源码: framework/validators/CRegularExpressionValidator.php#70 (显示)
public function clientValidateAttribute($object,$attribute)
{
    if($this->pattern===null)
        throw new CException(Yii::t('yii','The "pattern" property must be specified with a valid regular expression.'));
    $message=$this->message!==null ? $this->message : Yii::t('yii','{attribute} is invalid.');
    $message=strtr($message, array(
        '{attribute}'=>$object->getAttributeLabel($attribute),
    ));
    $pattern=$this->pattern;
    $pattern=preg_replace('/\\\\x\{?([0-9a-fA-F]+)\}?/', '\u$1', $pattern);
    $delim=substr($pattern, 0, 1);
    $endpos=strrpos($pattern, $delim, 1);
    $flag=substr($pattern, $endpos + 1);
    if ($delim!=='/')
        $pattern='/' . str_replace('/', '\\/', substr($pattern, 1, $endpos - 1)) . '/';
    else
        $pattern = substr($pattern, 0, $endpos + 1);
    if (!empty($flag))
        $pattern .= preg_replace('/[^igm]/', '', $flag);
    return "
if(".($this->allowEmpty ? "jQuery.trim(value)!='' && " : '').($this->not ? '' : '!')."value.match($pattern)) {
messages.push(".CJSON::encode($message).");
}
";
}
Returns the JavaScript needed for performing client-side validation.
validateAttribute()
方法
| 
protected void validateAttribute(CModel $object, string $attribute) | ||
| $object | CModel | the object being validated | 
| $attribute | string | the attribute being validated | 
源码: framework/validators/CRegularExpressionValidator.php#44 (显示)
protected function validateAttribute($object,$attribute)
{
    $value=$object->$attribute;
    if($this->allowEmpty && $this->isEmpty($value))
        return;
    if($this->pattern===null)
        throw new CException(Yii::t('yii','The "pattern" property must be specified with a valid regular expression.'));
    // reason of array checking explained here: https://github.com/yiisoft/yii/issues/1955
    if(is_array($value) ||
        (!$this->not && !preg_match($this->pattern,$value)) ||
        ($this->not && preg_match($this->pattern,$value)))
    {
        $message=$this->message!==null?$this->message:Yii::t('yii','{attribute} is invalid.');
        $this->addError($object,$attribute,$message);
    }
}
Validates the attribute of the object. If there is any error, the error message is added to the object.