public class InsensitiveRegularExpressionValidator : System.Web.UI.WebControls.BaseValidator {
       private string _evalString;
       private string _regexString;
       private const string _validatorIncludeScriptKey = "InsensitiveRegularExpressionScript";
                   private string _includeScript = @"
<script language=""javascript"">
<!--
function InsensitiveRegularExpressionValidatorEvaluateIsValid (val){
 var value = ValidatorGetValue(val.controltovalidate);
 if (ValidatorTrim(value).length == 0)
   return true;    
 var rx = new RegExp(val.validationexpression, 'i');    
 var matches = rx.exec(value);
 return (matches != null && value == matches[0]);
}
</script>
";
       public string ValidationExpression {
     get{return _regexString;}
     set{_regexString = value;}
   }
   
       public InsensitiveRegularExpressionValidator() {
         }
           protected override bool ControlPropertiesValid() {
     Control ctrl = FindControl(ControlToValidate);
     if ( null != ctrl ) {
       if (ctrl is System.Web.UI.WebControls.TextBox) {
         _evalString = ((System.Web.UI.WebControls.TextBox) ctrl).Text;
         return ( null != _evalString );
       } else if (ctrl is System.Web.UI.HtmlControls.HtmlInputControl) {
         _evalString = ((System.Web.UI.HtmlControls.HtmlInputControl) ctrl).Value;
         return ( null != _evalString );
       }
       return false;
     } else
       return false;
   }
           protected override bool EvaluateIsValid() {
     System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(ValidationExpression
           , System.Text.RegularExpressions.RegexOptions.IgnoreCase);    
     return regex.IsMatch(_evalString) ;
   }
       protected override void RegisterValidatorDeclaration() {
     string element = "document.getElementById(\"" + ClientID + "\")";
     Page.RegisterArrayDeclaration("Page_Validators", element);
   }
               protected new void RegisterValidatorCommonScript () {
     if (!Page.IsClientScriptBlockRegistered(_validatorIncludeScriptKey)) {
       Page.RegisterClientScriptBlock(_validatorIncludeScriptKey, _includeScript);
     }
   }
       protected override void OnPreRender(EventArgs e) {
     this.RegisterValidatorCommonScript();
     base.OnPreRender (e);
   }
               protected override void AddAttributesToRender(HtmlTextWriter writer) {
     base.AddAttributesToRender(writer);
     if (RenderUplevel) {
       writer.AddAttribute("evaluationfunction", "InsensitiveRegularExpressionValidatorEvaluateIsValid");
       if (ValidationExpression.Length > 0) {
         writer.AddAttribute("validationexpression", ValidationExpression);
       }
     }
   }
 }