如果输入的字符串在我的MVC模型的末尾没有连字符(-
),我想要做的是抛出验证错误消息。
我需要为它创建一个自定义正则表达式。这是我到目前为止所做的,
[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; }
任何帮助都将不胜感激。
感谢。
答案 0 :(得分:0)
您的正则表达式^(?:[a-zA-Z0-9]+\s?\-)+$
在每个字母数字块之后需要-
。
您需要将其放在小组之外,$
旁边:
^(?:[a-zA-Z0-9]+\s?)+-$
^
请参阅online demo
这样,您需要以-
结束字符串,现在整个模式匹配:
^
- 字符串的开头(?:[a-zA-Z0-9]+\s?)+
- 1个或多个序列
[a-zA-Z0-9]+
- 一个或多个ASCII字母或数字\s?
- 1或0个空格-
- 连字符$
- 字符串结束。请注意,从正则表达式引擎的角度来看,更优化的模式将是
^[a-zA-Z0-9]+(?:\s[a-zA-Z0-9]+)*-$
因为它更线性。请参阅its demo。