C# 检查数据批注中的最后一个字符是否为连字符(-)
如果输入的字符串在MVC模型的末尾没有连字符(C# 检查数据批注中的最后一个字符是否为连字符(-),c#,regex,asp.net-mvc,data-annotations,C#,Regex,Asp.net Mvc,Data Annotations,如果输入的字符串在MVC模型的末尾没有连字符(-),我要做的是抛出一条验证错误消息 我需要为它创建一个自定义正则表达式。这就是我到目前为止所做的 [Required(ErrorMessage = "Username is required.")] [Remote("CheckExistingUserName", "Home", HttpMethod = "POST", ErrorMessage = "Username already exists.")] [RegularExpression("
-
),我要做的是抛出一条验证错误消息
我需要为它创建一个自定义正则表达式。这就是我到目前为止所做的
[Required(ErrorMessage = "Username is required.")]
[Remote("CheckExistingUserName", "Home", HttpMethod = "POST", ErrorMessage = "Username already exists.")]
[RegularExpression("^(?:[a-zA-Z0-9]+\s?\-)+$", ErrorMessage = "Username is invalid.")]
public string UserName { get; set; }
任何帮助都将不胜感激
谢谢。您的正则表达式^(?[a-zA-Z0-9]+\s?\-)+$
需要在每个字母数字块后加一个-
您需要将其放在组外,$
旁边:
^(?:[a-zA-Z0-9]+\s?)+-$
^
见
这样,您需要一个字符串以-
结尾,整个模式现在匹配:
-字符串的开头^
-1个或多个(?:[a-zA-Z0-9]+\s?)+
-1个或多个ASCII字母或数字[a-zA-Z0-9]+
-1或0个空格\s?
-连字符-
-字符串结束$
因为它更线性。看。这似乎很奇怪。但是为什么你不能把它添加到正则表达式的末尾呢<代码>^(?[a-zA-Z0-9]+\s?+\-$如果结尾的连字符是某种秘密,我有个坏消息告诉你……你的模式应该是,而不是
^(?[a-zA-Z0-9]+\s?\-)+$
。基本上,您可以使用^.*-$
要求最后一个字符为连字符。你的正则表达式应该满足什么要求?你是对的。谢谢你的帮助:-)
^[a-zA-Z0-9]+(?:\s[a-zA-Z0-9]+)*-$