我使用以下Regex来验证字符串^ [a-zA-Z0-9 - /] *
private static void ValidateActualValue(string value)
{
if (String.IsNullOrEmpty(value)) throw new ArgumentNullException("value");
if (Regex.IsMatch(value, (@"^[a-zA-Z0-9-/]*")))
{
throw new InvalidBarcodeException(value);
}
}
应该允许以下字符串string correctBarcodeString =“1-234567890 / A”; 然而,仍有一个异常抛出。
允许的值应为:
答案 0 :(得分:2)
将-
字符放在课程的末尾或将其转义。
[a-zA-Z0-9/-]
或[a-zA-Z0-9\-/]
答案 1 :(得分:1)
在字符组中,-
必须位于开头或结尾,否则必须进行转义。
所以将其改为
"^[a-zA-Z0-9/-]*"
编辑:
我还建议在正则表达式的末尾加一个锚点,否则只要第一部分有效,它也会匹配。
"^[a-zA-Z0-9/-]*$"
如果您想避免匹配空字符串,请使用+
代替*
。或者,如果您知道长度的有效最小/最大范围{4,20}
,则最小字符数为4,最大值为20。
答案 2 :(得分:1)
我认为你真的想要;
@"^[\w/-]+"
使用+而不是*也会覆盖空字符串。 \ w =所有数字+字母
答案 3 :(得分:0)
更改
@"^[a-zA-Z0-9-/]*"
到
@"^[a-zA-Z0-9/]*"
9后你有一个额外的连字符。