regex C#组件模型RegularExpression验证程序拒绝有效的正则表达式数据[重复]

dwthyt8l  于 2022-12-05  发布在  C#
关注(0)|答案(2)|浏览(110)

此问题在此处已有答案

Regex for RegularExpressionAttribute must contain "[S]" text(1个答案)
2天前关闭。
此正则表达式

[Required]
        [RegularExpression("^[VB]", ErrorMessage = "The barcode must start with B or V")]
        public string Barcode { get; set; }

失败,并显示以下信息:

"Barcode": {
            "rawValue": "B6761126229752008155",
            "attemptedValue": "B6761126229752008155",
            "errors": [
                {
                    "exception": null,
                    "errorMessage": "The barcode must start with B or V"
                }
            ],
            "validationState": 1,
            "isContainerNode": false,
            "children": null
        },

即使显示的值是正确的.....正则表达式在www.example.com中通过Regex101.com

我不知道该怎么做。有什么想法吗?如果我删除验证器,代码将以正确的条形码值运行到我的控制器。

balp4ylt

balp4ylt1#

您只匹配了第一个单词,而不是整个“条形码”。因此,您需要添加一些内容来匹配“条形码”的其余部分。
一种形式是在末尾加上\d+,它告诉你在所需的“V”或“B”后面匹配一个或多个数字。
完整正则表达式可以是:“^[VB]”
这将匹配整个“条形码”并解决您的问题。

igetnqfo

igetnqfo2#

您可以使用

[Required]
[RegularExpression("^[VB].*", ErrorMessage = "The barcode must start with B or V")]
public string Barcode { get; set; }

通过添加.*,您允许整个字符串匹配正则表达式模式。基本上,^在当前上下文中是多余的,因为RegularExpression属性中使用的模式必须匹配整个字符串。

相关问题