Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式数据批注不允许的开始/结束空格(类似于修剪)_C#_Regex_Asp.net Mvc_Data Annotations - Fatal编程技术网

C# 正则表达式数据批注不允许的开始/结束空格(类似于修剪)

C# 正则表达式数据批注不允许的开始/结束空格(类似于修剪),c#,regex,asp.net-mvc,data-annotations,C#,Regex,Asp.net Mvc,Data Annotations,我使用正则表达式数据注释来验证街道地址字段是否包含数字、字母和空格(介于两者之间)。如果street字段在用户输入的文本的开头或结尾包含空格,我希望数据注释抛出错误 示例: // [123 Fake Street] = valid // [ 123 Fake Street] = not valid // [ 123 Fake Street ] = not valid // [123 Fake Street ] = not valid 这就是我到目前为止所做的: [Regula

我使用正则表达式数据注释来验证街道地址字段是否包含数字、字母和空格(介于两者之间)。如果street字段在用户输入的文本的开头或结尾包含空格,我希望数据注释抛出错误

示例:

// [123 Fake Street] = valid
// [   123 Fake Street] = not valid
// [   123 Fake Street    ] = not valid
// [123 Fake Street   ] = not valid
这就是我到目前为止所做的:

[RegularExpression(@"^[a-zA-Z 0-9]+$", ErrorMessage = "Street Address not valid.")]
任何帮助都将不胜感激


谢谢

我不确定这是否是一个学术练习,但是你能从用户的输入中删去前导和尾随空格吗?似乎这只是一个格式问题,而不是一个合法的错误。但是,如果目的是更好地理解正则表达式,请不要理会我的漫谈。

您只需要做一点更改:

"^(?:[a-zA-Z0-9]+\s?)+[a-zA-Z0-9]+$" 
这意味着:

  • 获取1个或多个字母或数字以及可选空格,并重复1次或多次
  • 以一个或多个字母或数字结束
  • 你也可以写:

    "^(?:\w+\s?)+\w+$" 
    

    如果您想要的只是缺少空白,那么您可以这样做:

    ^\S.+\S$
    
    这确保它以数字开头,以字母、句点或数字结尾

    这基本上相当于:

    ^[^ ].+[^ ]$
    
    您也可以只查找以数字开头,以字符或句点结尾的内容(缩写)


    如果正则表达式以数字/字母开头,中间有任何数字/字母/空格,最后以字母、数字或符号结尾(比如“.”,因为驱动器可以是Dr。)否。我使用数据注释来执行ajax表单验证。我不能只修剪输入的原因是我有另一个文本长度验证规则。因此,如果用户在文本前后都有空格,那么这些空格将被计算为文本长度,并因此抛出文本长度错误消息。这正是我想要的。谢谢:)
    ^\d.*[\w\.]$