首页 > 解决方案 > 关于 .net 核心实体框架 5 中带有希伯来语后者字段验证的 Url 的问题

问题描述

我有 Entity Framework Core 5 的 asp.net core 5.0 解决方案,在我的模型中,我有两个包含 url 字符串的字段。

我的问题是如何验证它们,因为它们可能包括希伯来语后者。

常规 [Url] 字段属性与带有希伯来语后者的 url 不匹配,因此向用户提出验证错误。

我也尝试了这样的自定义正则表达式属性:

[正则表达式(@"^((http|https|ftp)://)([\w-]+.)+[\w]+(/[\w-./?%&,=~]*) ?$",ErrorMessage ="请输入有效的网址!")]

它仍然不接受 url 字符串中的希伯来语后者。

我必须说,使用如下所示的正则表达式进行相同的匹配检查确实可以正常工作。

正则表达式 rgx = new Regex(@"^((http|https|ftp)://)([\w-]+.)+[\w]+(/[\w- ./?%&,=~ ]*)?$"); bool isMatch = rgx.IsMatch("http://www.msomesite.net/תנאי קדם ודרישות הקורס.doc");

有人知道如何解决它吗?

标签: validationasp.net-coreurlentity-framework-corehebrew

解决方案


您可以尝试像这样在正则表达式中更改您的部分:

@"^((http|https|ftp)://)([\w-]+.)+[\w]+(/[\w- ./?%&,=~\0590-\05FF]*)?$"

这是一个演示:

模型:

public class ValidationModel
    {
        [RegularExpression(@"^((http|https|ftp)://)([\w-]+.)+[\w]+(/[\w- ./?%&,=~\0590-\05FF]*)?$", ErrorMessage = "Please enter a valid url!")]
    
        public string Url { get; set; }
       
    }

查看:</p>

@model ValidationModel
<form method="post">
    <div class="form-group">
        <label asp-for="Url" class="control-label"></label>
        <input asp-for="Url" class="form-control" />
        <span asp-validation-for="Url" class="text-danger"></span>
    </div>
   
    <input type="submit" value="submit" />
</form>
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
    <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>

结果: 在此处输入图像描述

更新:

如果您想在 Regex 和 RegularExpression 属性中使用它,请尝试使用:

@"^((http|https|ftp)://)([\w-]+.)+[\w]+(/[\w- ./?%&,=~\u0590-\u05fe]*)?$"

结果: 在此处输入图像描述

测试http://po:rt/תנאי קדם ודריש#ות הקורס.doc在此处输入图像描述


推荐阅读