我有一个场景,我需要验证给定的字符串,只允许在给定字符串的中间有-
或.
个特殊字符。
-
或.
个特殊字符。-
或.
,而不是同时允许它们(最多允许一次出现)。
我用Regex来验证给定的字符串。 Regex regex = new Regex(@"(^[a-zA-Z]+[.|-]?([a-zA-Z]+)$)");
并验证传递给IsMatch
方法的字符串
regex.IsMatch(givenString)
以上是我提出的解决方案。有没有更好的方法来验证这种情况?
由于
答案 0 :(得分:0)
您当前的正则表达式不允许单个字符输入,而可能有a
。您可以使用设置了?
量词的分组构造来修复它:
var regex = new Regex(@"^[a-zA-Z]+(?:[.-][a-zA-Z]+)?$");
// or, using the case insensitive modifier
var regex = new Regex(@"^[A-Z]+(?:[.-][A-Z]+)?$", RegexOptions.IgnoreCase);
<强>详情
^
- 字符串开头[a-zA-Z]+
- 一个或多个ASCII字母(?:[.-][a-zA-Z]+)?
- 一次或零次重复.
或-
后跟一个或多个ASCII字母$
- 字符串结尾(或\z
,以防您在结尾\n
之前不想允许匹配)。请参阅regex demo。