正则表达式允许一些特殊字符 c#

Sil*_*ley 2 c# regex

我必须检查一个字符串是否包含特殊字符,但我可以在其中允许这 5 个特殊字符 .()_-

我已经将我的正则表达式写为

var specialCharacterSet = "^[()_-.]";
var test = Regex.Match("a!", specialCharacterSet);
var isValid = test.Success;
Run Code Online (Sandbox Code Playgroud)

但它抛出一个:

错误解析 "^[()_-.]" - [xy] 范围以相反的顺序。

Wik*_*żew 5

您已使用 指定了一个范围-。放在最后:

[()_.-]
Run Code Online (Sandbox Code Playgroud)

否则范围不正确:下界符号_在字符表中出现的晚于上界符号.

在此处输入图片说明

此外,如果您打算检查字符串中的任何字符是否属于该集合,则应^仅在字符串的开头删除该检查。

要测试字符串是否符合某种模式,请使用Regex.IsMatch

指示正则表达式是否在输入字符串中找到匹配项。

var specialCharacterSet = "[()_.-]";
var test = Regex.IsMatch("a!", specialCharacterSet);
Run Code Online (Sandbox Code Playgroud)

更新

接受不包含五个字符的任何字符串值,您可以使用

var str = "file.na*me";
if (!Regex.IsMatch(str, @"[()_.-]"))
    Console.WriteLine(string.Format("{0}: Valid!", str));
else
    Console.WriteLine(string.Format("{0}: Invalid!", str));
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

IDEONE 演示