我使用:如何在RegularExpression屬性上添加多行選項?
[RegularExpression(@"^(""|\[)?[a-zA-Z0-9']{1,125}(""|\])?$")]
,以確保一個多行TextBox的每一行正確匹配。但我不知道如何添加全局標誌和多線標誌選項。 MVC不可能嗎?我還有什麼其他選擇?
我使用:如何在RegularExpression屬性上添加多行選項?
[RegularExpression(@"^(""|\[)?[a-zA-Z0-9']{1,125}(""|\])?$")]
,以確保一個多行TextBox的每一行正確匹配。但我不知道如何添加全局標誌和多線標誌選項。 MVC不可能嗎?我還有什麼其他選擇?
它看起來並不像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);
}
}
You can add an inline option to enable MultiLine。這也可以確保表達式在Javascript中也能正常工作。
[RegularExpression(@"(?m)^(""|\[)?[a-zA-Z0-9']{1,125}(""|\])?$")]
我不認爲這會在JavaScript中工作.. – 2012-11-11 10:20:53
它看起來像你是正確的...... :(http://www.regular-expressions.info/modifiers.html – jessehouwing 2012-11-14 15:18:29
這是你將如何使用正則表達式做到這一點,基本上不依賴於多行標誌或屬性,而不是你明確地定義正則表達式允許新線,但同樣的模式需要遵循
[RegularExpression(@"^(""|\[)?[a-zA-Z0-9']{1,125}(""|\])?(?:\r?\n(""|\[)?[a-zA-Z0-9']{1,125}(""|\])?)*$")]
謝謝我創建了一個基於此。 – Darren 2012-03-13 21:13:14