[英]How to add multiline option on RegularExpression attribute?
我在用:
[RegularExpression(@"^(""|\[)?[a-zA-Z0-9']{1,125}(""|\])?$")]
確保多行文本框的每一行都正確匹配。 但我無法弄清楚如何添加全局標志和多行標志選項。 MVC不可能嗎? 我還有其他選擇嗎?
您可以添加內聯選項以啟用MultiLine,而無需向屬性添加RegexOptions重載。 這也確保表達式也適用於Javascript。
[RegularExpression(@"(?m)^(""|\[)?[a-zA-Z0-9']{1,125}(""|\])?$")]
這就是你如何使用Regex,基本上不依賴於多行標志或屬性,而是明確定義正則表達式以允許新行,但需要遵循相同的模式
[RegularExpression(@"^(""|\[)?[a-zA-Z0-9']{1,125}(""|\])?(?:\r?\n(""|\[)?[a-zA-Z0-9']{1,125}(""|\])?)*$")]
它看起來不像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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.