Валидатор электронной почты Flex - в доменном имени разрешен символ £ - PullRequest
1 голос
/ 20 апреля 2011

У меня есть ошибка, чтобы исправить в работе, где символ британского фунта, £, разрешен в доменном имени.

Я проверил источник 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 ]

3 голосов
/ 20 апреля 2011

Я думаю, вам следует переопределить метод doValidation класса mx.validators.EmailValidator , как этот, а не клонировать класс

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;                      
        }

Надежды, которые помогают

0 голосов
/ 20 апреля 2011

Зачем вам нужно , чтобы запретить это?

Этот риторический вопрос, заданный вам числом 42 и буквами S и O.


Есть так много других символов, которые вы не спрашиваете о конкретном запрете.Я бы посоветовал принять решение занести в черный список «только немногих», как вы, или полностью переосмыслить процесс проверки в формате белого списка.

...