在我的 ASP.NET MVC 项目中,是一个正则表达式,用于验证带有字母数字字符和破折号的字符串,同时也不允许前导或尾随破折号:
^(([a-zA-Z0-9]{1,}?)(\-{0,}?)([a-zA-Z0-9]{1,}?))+$
这适用于大多数用例:
safename (valid)
123 (valid)
there-is-something-here (valid)
your-name-goes-here (valid)
-something-is-up (invalid)
say-what- (invalid)
但是,有一些用例我希望有效,但不是:
a-b (valid)
a-bc-d (valid)
ab-cd-e (valid)
a-bc-de (valid)
this-is-a-test (invalid)
a-b-c (invalid)
1-2-3 (invalid)
我可以有一个前导和/或尾随字符,但在字符串的其余部分中不能有一个字符。我想要a-b-c
或1-2-3
有效,但我尝试过的任何修改都没有产生预期的结果。我对第一组和第三组进行了小改动,但前导和尾随破折号通过:
^(([a-zA-Z0-9]{0,}?)(\-{0,}?)([a-zA-Z0-9]{0,}?))+$
我已经达到了正则表达式的极限,希望得到任何指导。我正在寻找的结果是否可以通过一个表达式来实现?