URL 的正则表达式数据注释不起作用

问题描述 投票:0回答:4

我尝试用于我正在开发的 WPF MVVM 应用程序的正则表达式数据注释时好时坏,并且似乎不适用于很多正则表达式。

这个有效(不是针对 url,而是一些简单的东西):

[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$")]

这个以及我尝试过的所有其他 url 验证正则表达式都没有:

[RegularExpression(@"/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/")]

有人有可与数据注释和 WPF 一起使用的有效 URL 正则表达式示例吗?

.net wpf regex data-annotations
4个回答
0
投票

删除开始和结束斜杠,.net 不需要正则表达式分隔符。这里也不需要锚点,模式会自动与整个输入进行匹配。

[RegularExpression(@"(https?://)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*/?")]

应该会工作得更好。还删除了一些不需要的转义。我还没有检查模式本身的正确性!


0
投票

您可以从这篇如何使用正则表达式验证 URL 文章中找到有关验证 URL 的更多信息。

这是他们的建议之一,适用于各种 URL:

^((https?|ftp)://|(www|ftp).)[a-z0-9-]+(.[a-z0-9-]+)+([/?].* )?$

正如 @stema 所说,如果您对此有任何问题,请显示您尝试验证的任何 URL。


0
投票

这是我对 URL 数据注释正则表达式的建议。对我来说效果很好。

[RegularExpression(@"^(http(s)?://)?([\w-]+\.)+[\w-]+[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?$")]

0
投票

我不使用

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");
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.