Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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# 使用自定义RegeAttribute时模型状态无效_C#_Regex_Asp.net Mvc_Enterprise Library - Fatal编程技术网

C# 使用自定义RegeAttribute时模型状态无效

C# 使用自定义RegeAttribute时模型状态无效,c#,regex,asp.net-mvc,enterprise-library,C#,Regex,Asp.net Mvc,Enterprise Library,正则表达式不在代码中工作,但在工具中工作: \+?\(([0-9]{2})\([.-]?)([0-9]{4})\2([0-9]{4}) 此regex用于MVC应用程序中的自定义属性。它总是使模型失效。虽然它在在线工具中工作准确 我正在尝试验证电话号码的格式:+(55)7564 6242您没有指定语言,但从属性和MVC我猜是C 您必须为源代码转义正则表达式字符串 原始图案 \+?\(?([0-9]{2})\)?([ .-]?)([0-9]{4})\2([0-9]{4}) 常规C#(或Java)字

正则表达式不在代码中工作,但在工具中工作:
\+?\(([0-9]{2})\([.-]?)([0-9]{4})\2([0-9]{4})

regex
用于MVC应用程序中的自定义属性。它总是使模型失效。虽然它在在线工具中工作准确


我正在尝试验证电话号码的格式:
+(55)7564 6242

您没有指定语言,但从属性和MVC我猜是C

您必须为源代码转义正则表达式字符串

原始图案

\+?\(?([0-9]{2})\)?([ .-]?)([0-9]{4})\2([0-9]{4})
常规C#(或Java)字符串

string pattern = "\\+?\\(?([0-9]{2})\\)?([ .-]?)([0-9]{4})\\2([0-9]{4})"
C#逐字逐句(更适合正则表达式/硬编码的Windows路径)

有关更多信息,请参阅

没有转义
未转换的字符串将导致正则表达式引擎无法识别的模式(请参见下面的输出),因为
\
在源语言字符串中是特殊的。它可能是这样逃避的

 string pattern = "\+?\(?([0-9]{2})\)?([ .-]?)([0-9]{4})\2([0-9]{4})";
 print(pattern);
将输出(注意缺少的
\\
s)

+(([0-9]{2}))([.-]?)([0-9]{4})2([0-9]{4})

你可以这样用

public partial class xxx
{
[RegularExpression(@"^\+?\(?([0-9]{2})\)?([ .-]?)([0-9]{4})\2([0-9]{4})", ErrorMessage = "")]
public string MobileNumber { get; set; }
}

IIRC属性自动锚定模式(例如,将其包装在
^
..
$
中)。这会影响你的结果吗?如果没有,请发布属性定义。
public partial class xxx
{
[RegularExpression(@"^\+?\(?([0-9]{2})\)?([ .-]?)([0-9]{4})\2([0-9]{4})", ErrorMessage = "")]
public string MobileNumber { get; set; }
}