2012-03-13 21 views
3

私が使用しています:RegularExpression属性にmultilineオプションを追加するにはどうすればよいですか?

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

を複数行のテキストボックスの各行が正しく一致していることを確認します。しかし、私はグローバルフラグとマルチラインフラグオプションを追加する方法を理解することはできません。 MVCでは不可能ですか?その他の選択肢は何ですか?

答えて

1

それはRegularExpressionAttribute似ていないので、ここで、オプションを渡すサポートし、それを可能にするものを(チェックが、テストされていないコンパイル)です:

[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

3

You can add an inline option to enable MultiLine属性にRegexOptions過負荷を追加することなく。これはまた、式がJavascriptでも動作することを保証します。

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

私はこれがjavascriptで動作するとは思わない。 –

+0

あなたは正しいと思われる... :(http://www.regular-expressions.info/modifiers.html) – jessehouwing

0

これは、あなたは基本的に複数行フラグや属性に頼らない、正規表現でそれを行うだろうかである代わりに、あなたが明示的に新しい行を許可するように正規表現を定義しますが、同じパターンが

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