我有一个错误要修复工作,域名中允许使用英镑符号£。
我检查了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,所以这将是有问题的。
任何想法的人?
答案 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带来的修辞问题。
有许多其他符号,您不会询问有关具体禁止的内容。我建议像你现在一样决定将“只有少数几个”列入黑名单,否则完全将你的验证过程重新考虑为白名单格式。