gpt4 book ai didi

c# - 使用正则表达式的 Asp.Net 模型验证。寻找特定的字符串而不仅仅是一个字母

转载 作者:行者123 更新时间:2023-11-30 16:45:49 24 4
gpt4 key购买 nike

我目前的情况是,我们不想让外部电子邮件用于我们的一个应用程序。该应用程序是在 Asp.Net MVC 中开发的。我知道在模型端你可以做服务器端验证,然后你可以用它来获得前端验证。我的问题是我使用的 RegularExpression 总是返回 true,就好像它只是在寻找这些字母之一而不是整个字符串。如何让它查找整个字符串?

这是一个示例代码片段和结果。

[Required]
[EmailAddress]
[Display(Name = "Email")]
//I have tried many different variations on the regex
[RegularExpression("{/@gmail}", ErrorMessage = "No Gmail accounts allowed")]
//[RegularExpression("{[/@gmail]}", ErrorMessage = "No Gmail accounts allowed")]
//[RegularExpression("{[/@][g][m][a][i][l]}", ErrorMessage = "No Gmail accounts allowed")]
//[RegularExpression("/@gmail", ErrorMessage = "No Gmail accounts allowed")]

public string Email {get; set;}

无论我在正则表达式上尝试什么变体,这似乎都是结果。我还通读了所有规则,但没有看到任何匹配字符串的内容。 Result

非常难过......在 perl 中,它会像“s/@gmail//g”一样简单,没有什么可以从模型端完成的类似操作吗?

@彼得B

[RegularExpression("@gmail", ErrorMessage = "Please do not use your gmail account.")]

Result using the gmail format

最佳答案

根据您最初的理解,答案是使用:

[RegularExpression("@gmail", ErrorMessage = "No Gmail accounts allowed")]

但是,此验证规则实际上声明电子邮件必须包含“@gmail”,而不是不得包含。

然后,解决方案是使用 negative lookahead否定模式 - 类似于:

[RegularExpression("^(?!.*@gmail)", ErrorMessage = "No Gmail accounts allowed")]

这是说“从字符串的开头向前看,它不能包含模式:"@gmail"”。

关于c# - 使用正则表达式的 Asp.Net 模型验证。寻找特定的字符串而不仅仅是一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41466438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com