gpt4 book ai didi

regex - 客户端验证不支持使用 Unicode 的 ASP.NET MVC 正则表达式验证

转载 作者:行者123 更新时间:2023-12-04 01:48:10 24 4
gpt4 key购买 nike

我想验证一个给定的字符串,该字符串将用于在服务器中保存具有所需名称的文件。

这要求我使用以下正则表达式:^[\p\w\-. ]+$效果很好,但仅适用于英文字符串。

所以我把它修改成这样 ^[\p{L}\w\-. ]+$ {L}修饰符设置为接受任何 Unicode 字符。

这是 View 模型。

[Required(ErrorMessageResourceType = typeof(FilesRepositoryStrings), ErrorMessageResourceName = "EnterTheNamePlease")]
[Display(ResourceType = typeof(FilesRepositoryStrings), Name = "FileNameInputLabel")]
[RegularExpression(@"^[\p{L}\w\-. ]+$", ErrorMessage = @"The file name can only contain letters, numbers and characters -_.")]
public string FileName { get; set; }

这是 html 渲染
<input class="form-control" data-val="true"
data-val-regex="The file name can only contain letters, numbers and characters -_."
data-val-regex-pattern="^[\p{L}\w\-. ]+$"
data-val-required="הזן את השם בבקשה"
id="UploadFileModel_FileName"
name="UploadFileModel.FileName"
onkeyup="$('#EnterTheNamePlease').attr('hidden', true);"
type="text" value=""
aria-required="true" aria-invalid="true">

但客户端验证不接受任何 Unicode(希伯来语)字符串..

有什么方法可以克服这个问题?

最佳答案

您可以使用 /u flag 在 Javascript RegExp 中激活 Unicode 支持。 .它是 ECMAScript6 的一部分,但根据 this table主要浏览器尚不支持它。

这很hacky,但您可以做的是用自定义正则表达式引擎替换客户端验证,例如XRegexp .正在支持unicode characters .在他们的例子中,他们使用速记符号 \pL但是 \p{L}也支持(根据 this, chapter Unicode Categories )。

我还没有完全测试,它可能有副作用。但我认为你可以做的是替换文件 jquery.validate.unobtrusive.js 中的 RegExp 匹配

match = new RegExp(params).exec(value);
return (match && (match.index === 0) && (match[0].length === value.length));

经过
var unicodeWord = XRegExp(params);
return unicodeWord.test(value);

您需要包含这些文件才能使其工作:
<script src="src/xregexp.js"></script>
<script src="src/addons/unicode-base.js"></script>
<script src="src/addons/unicode-categories.js"></script>
<script src="src/addons/unicode-scripts.js"></script>

当然,当 jquery 验证发展时,维护起来会很困难,但它可能是一个解决方案。

关于regex - 客户端验证不支持使用 Unicode 的 ASP.NET MVC 正则表达式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34428705/

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