正则表达式只允许.net中的某些字符

Gur*_*ruC 4 .net c# regex

我只是在进行一些验证并且坚持这个但是:(我想要一个仅包含[az] [AZ] [0-9] [_]的文本.

它应该以任何顺序接受任何上述字符.所有其他字符都将文本标记为无效.
我试过这个,但它没有用!

  {
        ......

        Regex strPattern = new Regex("[0-9]*[A-Z]*[a-z]*[_]*");

        if (!strPattern.IsMatch(val))
        {
            return false;
        }

        return true
  }
Run Code Online (Sandbox Code Playgroud)

cdh*_*wie 9

你要这个:

Regex strPattern = new Regex("^[0-9A-Za-z_]*$");
Run Code Online (Sandbox Code Playgroud)

你的表达不起作用,因为:

  • 它将接受任意数量的数字,后跟任意数量的大写字母,后跟任意数量的小写字母,后跟任意数量的下划线.例如,后跟数字的下划线不匹配.
  • 您的模式不使用^$字符锚定.这意味着每个字符串都匹配,因为每个字符串包含零个或多个指定字符.(例如,字符串"!@#$"包含零个数字等等!)将表达式锚定到字符串的开头和结尾意味着整个字符串整个表达式匹配很多,否则匹配将失败.
  • 此模式仍将接受零长度字符串作为有效.如果您希望强制该字符串至少为一个字符,*请将表达式的末尾更改为+.(*表示"前一个令牌的0或更多",而+表示"前一个令牌中的一个或多个.")