正则表达式可能只允许特定字符

时间:2011-05-02 12:58:52

标签: .net regex

  • 列表项

我使用以下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”; 然而,仍有一个异常抛出。

允许的值应为:

  • 1234234545689889097
  • A-adf90923409 / 1234
  • AAAAAAAAAA
  • BC-9876655788
  • BC-345 / q3435 / wqer
  • ABC- / BCD

4 个答案:

答案 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后你有一个额外的连字符。

相关问题