Flex电子邮件验证程序 - 域名中允许的£符号

时间:2011-04-20 09:32:58

标签: flex actionscript-3 validation flex3

我有一个错误要修复工作,域名中允许使用英镑符号£。

我检查了EmailValidator来源,可以看到它不是一个不允许的符号,而美元符号之类的东西是:

public class EmailValidator extends Validator
{
    include "../core/Version.as";

    //--------------------------------------------------------------------------
    //
    //  Class constants
    //
    //--------------------------------------------------------------------------

    /**
     *  @private
     */
    private static const DISALLOWED_LOCALNAME_CHARS:String =
                                "()<>,;:\\\"[] `~!#$%^&*={}|/?'";
    /**
     *  @private
     */                         
    private static const DISALLOWED_DOMAIN_CHARS:String =
                                "()<>,;:\\\"[] `~!#$%^&*+={}|/?'";

如您所见,DISALLOWED_DOMAIN_CHARS字符串不包含£符号。想到猴子修补(基本上复制整个类,编辑它,并将它添加到我的src - 对于那些不知情的人),但我们使用RSL,所以这将是有问题的。

任何想法的人?

2 个答案:

答案 0 :(得分:3)

我认为您应该覆盖类 mx.validators.EmailValidator 的方法 doValidation ,而不是克隆类

override protected function doValidation(value:Object):Array
        {
            var results:Array =  super.doValidation(value);

            var emailStr:String = String(value);
            var poundPos:int = emailStr.indexOf("£");
            if (poundPos != -1)
            {
                results.push(new ValidationResult(
                    true, null, "invalidChar",
                    this.invalidCharError));

            }

            return results;                      
        }

希望有所帮助

答案 1 :(得分:0)

为什么需要禁止它?

这个由42号字母和字母S和O带来的修辞问题。


有许多其他符号,您不会询问有关具体禁止的内容。我建议像你现在一样决定将“只有少数几个”列入黑名单,否则完全将你的验证过程重新考虑为白名单格式。