4

I would like to know if a way exists in asp.net mvc 2, to have multiple regular expression on a proprety. For example :

[RegularExpression("[^0-9]", ErrorMessageResourceName = ValidationMessageResourceNames.OnlyDigits, ErrorMessageResourceType = typeof(ValidationMessages))]
[RegularExpression("[^<>]{2,}", ErrorMessageResourceName = ValidationMessageResourceNames.SpecialCharErrorCreateAccount, ErrorMessageResourceType = typeof(ValidationMessages))]
public string City { get; set; }

The target here, is two have two specific error messages, one for the digits and one other for the special Chars and the fact that the min lenght must be 2 chars.

Thanks in advance for the help, or experience.

Etienne.

1
  • I'm not sure I understand your requirements exactly. What are the rules for a string to fail/pass validation? Could you show some examples of string you do or don't want to match? Commented Jan 26, 2011 at 10:42

3 Answers 3

5

Something like this:

    public class DigitsAttribute : RegularExpressionAttribute
    {
        public DigitsAttribute()
            : base("[^0-9]")
        {
        }    
    }

    public class SpecialCharsAttribute : RegularExpressionAttribute
    {
        public SpecialCharsAttribute()
            : base("[^<>]{2,}")
        {
        }
    }

Use:

[Digits]
[SpecialChars]
public string City { get; set; }
Sign up to request clarification or add additional context in comments.

2 Comments

can u plz have a look at this question stackoverflow.com/questions/12567194/…
Will this use client validation out-of-the-box or not? EDIT: Now I see that it doesn't.. :(
1

Change attribute usage with a custom class

The best solution is of course to create a custom attribute that inherits from RegularExpressionAttribute but sets different attribute usage settings. The main setting is AllowMultiple that you need to set to true.

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple=true)]
public class MultiRegularExpressionAttribute: RegularExpressionAttribute
{
    ...
}

You would use this attribute just like you use the existing RegularExpressionAttribute, but you'd have the ability to put multiple of them on the same property.

2 Comments

Can you show what exactly goes into the class? I really wanted to use this method but I am fairly new to this. The isValid method in the new class somehow never got visit and I have no idea why.
Do not use this solution,see this stackoverflow.com/questions/35652533/…
-1

Try this,

[RegularExpression("[^0-9]|[^<>]{2,}", ErrorMessageResourceName = ValidationMessageResourceNames.OnlyDigits, ErrorMessageResourceType = typeof(ValidationMessages))]
public string City { get; set; }

Here '|' has been used as OR condition to match

1 Comment

I'm interested in the downvote. This should be the way it works, though I'm having some trouble with .net Core…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.