关于 Url 在 .net 核心实体框架 5 中使用希伯来字母字段验证的问题

Querstion regarding Url with Hebrew latters field validation in .net core entity frame work 5

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

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

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

我也试过像这样自定义正则表达式属性:

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

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

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

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

有人知道如何解决吗?

您可以尝试像这样更改 RegularExpression 中的部分:

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

这是一个演示:

型号:

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

浏览:

@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 测试: