在我的 c# 类中,我正在使用数据注释来装饰一个属性,以验证 5 位数字。该数字的长度必须是最小和最大 5 位数字。但它总是说无效。我的正则表达式有什么问题?
[RegularExpression(@"^\(?([0-9]{5})\)$", ErrorMessageResourceType = typeof (GlobalErrorResource), ErrorMessageResourceName = "QUOTEREQUEST_VALID_ZIP_CODE")]
在我的 c# 类中,我正在使用数据注释来装饰一个属性,以验证 5 位数字。该数字的长度必须是最小和最大 5 位数字。但它总是说无效。我的正则表达式有什么问题?
[RegularExpression(@"^\(?([0-9]{5})\)$", ErrorMessageResourceType = typeof (GlobalErrorResource), ErrorMessageResourceName = "QUOTEREQUEST_VALID_ZIP_CODE")]
你也可以试试这个表达
"^[0-9]{5,5}$"
据我了解/ /
,在 JavaScript 中使用。
试试这个正则表达式@"^(\d{5})$"
\d如果为[0-9]组
{5}如您所知所需的长度。
{1,5}你可以,如果你想指定最小 (1) 和最大 (5) 长度。
你的正则表达式:
|-------------- start of group 1
v v----- end of group 1
@"^\(?([0-9]{5})\)$"
^^ ^ ^ ^ ^ ^-- end of line
|| | | | |---- literal right parenthesis ")"
|| | | |------- match 5 times
|| | |----------- match characters '0' thru '9'
|| |--------------- non-greedy match (I believe)
||----------------- literal left parenthesis "("
|------------------ start of line
你真的想要匹配括号,比如 "(12345)" 吗?
您还可以为此创建自己的属性:
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class ZipAttribute : System.ComponentModel.DataAnnotations.RegularExpressionAttribute
{
public ZipAttribute() : base("\\A\\b[0-9]{5}(?:-[0-9]{4})?\\b\\z")
{
ErrorMessage = "Invalid ZIP code.";
}
}
要使用它,您需要在您的Global.asax
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(ZipAttribute), typeof(RegularExpressionAttributeAdapter));
将此用于 5 或 9 位数的邮政编码
[Display(Name = "Zipcode"), RegularExpression("[0-9]{5}(-[0-9]{4})?", ErrorMessage="Zipcode must be in the proper format: '12345' or '12345-6789'")]
你可以用这个。
[RegularExpression(@"[0-9]{5}")]
当您输入\(时,您表示您必须添加括号来放置邮政编码。