我目前正在尝试使用RegularExpression属性来阻止用户输入html标签。这确实有效,并显示错误消息。我现在正试图让这个RegEx设置对文本框中添加的字符数量的限制。这是正则表达式:
[RegularExpression(@"[^<>]{1,10}$*", ErrorMessage = "NOO")]
public string Name { get; set; }
我是RegularExpressions的新手,并不知道它的工作原理。我预计{}内的值会设置最小和最大长度,但它不起作用,而检查是否&lt;&gt;已进入仍然有效。如何布置正则表达式以及此RegEx有什么问题?
我正在使用ASP.NET MVC 5 C#。
提前谢谢
答案 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; }