使用正则表达式设置文本字段的长度

时间:2013-11-29 12:07:03

标签: c# regex asp.net-mvc asp.net-mvc-5

我目前正在尝试使用RegularExpression属性来阻止用户输入html标签。这确实有效,并显示错误消息。我现在正试图让这个RegEx设置对文本框中添加的字符数量的限制。这是正则表达式:

    [RegularExpression(@"[^<>]{1,10}$*", ErrorMessage = "NOO")]
    public string Name { get; set; }

我是RegularExpressions的新手,并不知道它的工作原理。我预计{}内的值会设置最小和最大长度,但它不起作用,而检查是否&lt;&gt;已进入仍然有效。如何布置正则表达式以及此RegEx有什么问题?

我正在使用ASP.NET MVC 5 C#。

提前谢谢

4 个答案:

答案 0 :(得分:3)

查看你的正则表达式[^<>]{1,10}$* $后面的星号有点奇怪,因为它表示“任意数量的行结束”。

将输入与输入匹配时,我会将其解释为“在最后1到10个字符中不包含<>的任何内容”。

如果你想限制字符串的全长,你应该描述“输入开始”和“输入结束”之间的所有内容,所以最好在正则表达式的开头添加^

^([^<>]){1,10}$

答案 1 :(得分:1)

[RegularExpression(@"([^<>]{1,10}$*)[0,30]", ErrorMessage = "NOO")]
public string Name { get; set; }

[0,30]定义可输入的最小和最大字符数。

答案 2 :(得分:0)

这里有一个学习正则表达式的好地方:http://www.regular-expressions.info/tutorial.html

你的正则表达式的奇怪之处在于你在$符号后面有*。 $符号表示您应该在那里有匹配字符串的结尾,*表示重复(0或更多)。因此,检查零个或多个字符串结尾可能会使事情变得混乱。

除此之外,寻找1到10个不是&lt;或者&gt;似乎有效。所以我认为这是$背后的*会让你失望。

答案 3 :(得分:0)

试试这个

 [RegularExpression(@"^.{6,10}$", ErrorMessage = "Name should be of minimum 6 and maximum 10 characters")]
public string Name { get; set; }