2012-03-13 57 views

回答

1

它看起來並不像RegularExpressionAttribute支持傳球選擇,所以這裏是一個允許它(編譯檢查,但是未測試):無需到RegexOptions超載添加到屬性

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, 
         AllowMultiple = false)] 
public class RegExAttribute : ValidationAttribute 
{ 
    public string Pattern { get; set; } 
    public RegexOptions Options { get; set; } 

    public RegExAttribute(string pattern) : this(pattern, RegexOptions.None) { } 
    public RegExAttribute(string pattern, RegexOptions options) 
    { 
     Pattern = pattern; 
     Options = options; 
    } 

    public override bool IsValid(object value) 
    { 
     return Regex.IsMatch(value.ToString(), Pattern, Options); 
    } 
} 
+0

謝謝我創建了一個基於此。 – Darren 2012-03-13 21:13:14

3

You can add an inline option to enable MultiLine。這也可以確保表達式在Javascript中也能正常工作。

[RegularExpression(@"(?m)^(""|\[)?[a-zA-Z0-9']{1,125}(""|\])?$")] 
+0

我不認爲這會在JavaScript中工作.. – 2012-11-11 10:20:53

+0

它看起來像你是正確的...... :(http://www.regular-expressions.info/modifiers.html – jessehouwing 2012-11-14 15:18:29

0

這是你將如何使用正則表達式做到這一點,基本上不依賴於多行標誌或屬性,而不是你明確地定義正則表達式允許新線,但同樣的模式需要遵循

[RegularExpression(@"^(""|\[)?[a-zA-Z0-9']{1,125}(""|\])?(?:\r?\n(""|\[)?[a-zA-Z0-9']{1,125}(""|\])?)*$")]