我有一个错误,以修复工作中的英国磅符号,£,是允许在域名中。
我检查了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,所以这将是有问题的。
有什么想法吗?
发布于 2011-04-20 18:54:31
我认为您应该像这样重写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;
}希望能有所帮助
https://stackoverflow.com/questions/5728228
复制相似问题