正则表达式数据注释:匹配所有非HTML标记内容的正则表达式

时间:2013-04-10 15:24:07

标签: asp.net-mvc regex regex-negation data-annotations

需要在文本框上进行客户端不引人注意的验证,以警告用户他键入了无效符号。我想在数据注释中使用RegularExpression,有些像这样:

[Required]
[Display(Name = "RecordBody", ResourceType = typeof(Resources))]
[RegularExpression(@"(\<(/?[^\>]+)\>)", ErrorMessageResourceType = typeof(ValidationErrors), ErrorMessageResourceName = "DisallowHtml")]
[StringLength(8191, ErrorMessageResourceType = typeof(ValidationErrors), ErrorMessageResourceName = "TooLongEntry")]
public string Description { get; set; }

在服务器端使用正则表达式来验证用户输入,并在Javascript正则表达式的客户端使用:

<textarea cols="20" data-val="true" data-val-disallowhtml="Поле Текст записи содержит недопустимые символы" data-val-disallowhtml-pattern="(\<(/?[^\>]+)\>)" data-val-length="Введено слишком много символов. Допустимо: 8191" data-val-length-max="8191" data-val-required="Требуется поле Текст записи." id="Description" name="Description" rows="2"></textarea>

(\<(/?[^\>]+)\>)不起作用,因为它只匹配html标记。我需要一个匹配所有非HTML标记内容的正则表达式。换句话说,否定整个正则表达式。

这是一个工作示例http://cafuego.net/2011/11/15/html-and-regular-expressions。但我想(?<=^|>)([^><]+?)(?=<|$)它只适用于php。

1 个答案:

答案 0 :(得分:0)

根据您的一条评论,您应该能够使用先行断言来搜索任何标签;如果找到一个,则断言将失败,并且应显示错误消息。

e.g。

[RegularExpression(@"^(?![^<]*<[^>]+>).*$", ...