我尝试用于我正在开发的 WPF MVVM 应用程序的正则表达式数据注释时好时坏,并且似乎不适用于很多正则表达式。
这个有效(不是针对 url,而是一些简单的东西):
[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$")]
这个以及我尝试过的所有其他 url 验证正则表达式都没有:
[RegularExpression(@"/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/")]
有人有可与数据注释和 WPF 一起使用的有效 URL 正则表达式示例吗?
删除开始和结束斜杠,.net 不需要正则表达式分隔符。这里也不需要锚点,模式会自动与整个输入进行匹配。
[RegularExpression(@"(https?://)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*/?")]
应该会工作得更好。还删除了一些不需要的转义。我还没有检查模式本身的正确性!
您可以从这篇如何使用正则表达式验证 URL 文章中找到有关验证 URL 的更多信息。
这是他们的建议之一,适用于各种 URL:
^((https?|ftp)://|(www|ftp).)[a-z0-9-]+(.[a-z0-9-]+)+([/?].* )?$
正如 @stema 所说,如果您对此有任何问题,请显示您尝试验证的任何 URL。
这是我对 URL 数据注释正则表达式的建议。对我来说效果很好。
[RegularExpression(@"^(http(s)?://)?([\w-]+\.)+[\w-]+[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?$")]
我不使用
System.ComponentModel.DataAnnotations.RegularExpressionAttribute
作为 URL,我使用 System.ComponentModel.DataAnnotations.UrlAttribute
using System.ComponentModel.DataAnnotations;
public class GrpcClientOptions
{
[Required, Url]
public string Address { get; set; } = new("https://127.0.0.1:5555");
}