C# 使正则表达式在MVC4.0C中为多行文本框工作时遇到问题#
这是我的模型C# 使正则表达式在MVC4.0C中为多行文本框工作时遇到问题#,c#,regex,asp.net-mvc,asp.net-mvc-4,C#,Regex,Asp.net Mvc,Asp.net Mvc 4,这是我的模型 [Required(ErrorMessage = "At least one 10 digit number is required.")] [DataType(DataType.MultilineText)] [RegularExpression(@"^\d{10}$", ErrorMessage = "Please enter a valid 10 digit number.")] public string TenDigitNumbers
[Required(ErrorMessage = "At least one 10 digit number is required.")]
[DataType(DataType.MultilineText)]
[RegularExpression(@"^\d{10}$", ErrorMessage = "Please enter a valid 10 digit number.")]
public string TenDigitNumbers
{
get;
set;
}
这是我的看法
@Html.TextAreaFor(model => Model.TenDigitNumbers, new { @class = "MyModel", @cols = 11, @rows = 5 })
@Html.ValidationMessageFor(model => Model.TenDigitNumbers)<br />
@Html.TextAreaFor(model=>model.TenDigitNumbers,new{@class=“MyModel”,@cols=11,@rows=5})
@Html.ValidationMessageFor(model=>model.TenDigitNumbers)
此正则表达式适用于文本框中输入的一个十位数数字。但是,如果文本框中输入了一个以上的十位数字,则该操作失败。我已经读到正则表达式需要打开多行。通过在上面的模型中定义数据类型,我已经做到了这一点。因此,我不确定我做错了什么。RegularExpressionAttribute不支持多行属性。。你得自己滚
这个问题已经被问过了。。不从原作者的代码中删除。。下面是一个例子:有10位数字,你的意思是这样的:
1234567890 1234567890 1234567890 1234567890
在这种情况下,您需要一个能够理解这一点的表达式,比如:^\d{10}(\d{10})*$
当然,如果您使用的是多行文本框,比如:
^\d{10}(\r?\n\d{10})*$
这就是使用Regex的方法,基本上不依赖于多行标志或属性,而是显式定义Regex以允许新行,但需要遵循相同的模式
[RegularExpression(@"^\d{10}(\r?\n\d{10})*$", ErrorMessage = "Please enter a valid 10 digit number.")]
public string TenDigitNumbers
{
get;
set;
}
回复:“文本框中输入了一个以上的十位数字”:应该是什么样子?这些数字会用换行符分隔吗?按空格?使用逗号?+1,您不需要在正则表达式中指定Multiline选项。我发现我必须指定[DataType(DataType.multilitext)]