C# 需要简单的正则表达式帮助

C# 需要简单的正则表达式帮助,c#,regex,C#,Regex,我需要创建一个正则表达式来匹配包含除指定字符以外的任何内容的字符串。角色是 a-z a-z 0-9 + - * / : . $ % 和一个空间 我不太熟悉正则表达式,所以我不确定如何将其组合起来并进行测试。我可以找到很多备忘单,但我不知道如何将其实际构造为一个完整的模式。a^在捕获组字符类中否定类中的那些字符。因此: [^a-zA-Z0-9+\-*/:.] 有些字符在正则表达式中有特殊字符,因此它们用\转义 ~^[^a-z0-9\+\-\*\/\:\.\$\%\x20]*$~i 以“^”开头

我需要创建一个正则表达式来匹配包含除指定字符以外的任何内容的字符串。角色是

a-z a-z 0-9 + - * / : . $ % 和一个空间

我不太熟悉正则表达式,所以我不确定如何将其组合起来并进行测试。我可以找到很多备忘单,但我不知道如何将其实际构造为一个完整的模式。

a
^
在捕获组字符类中否定类中的那些字符。因此:

[^a-zA-Z0-9+\-*/:.]
有些字符在正则表达式中有特殊字符,因此它们用
\
转义

~^[^a-z0-9\+\-\*\/\:\.\$\%\x20]*$~i
以“^”开头,以“$”结尾,以确保字符串只包含允许的字符。
字符组以“^”开头表示否定\x20代表空格,对于任何使用空格的人来说都是\x20。此RegExp不区分大小写(i修饰符)。您可以在这里测试正则表达式

您不需要在字符集中转义
*
。实际上不需要Bart,但初学者应该意识到转义的重要性。@Russ,就个人而言,我发现更重要的是要明白,字符集是正则表达式语言中自己的一种小型语言,具有自己的元字符。通过评论“普通”元角色没有“特殊能力”,我希望实现这一点。我在这里每周都会看到类似于
[a | b]
的模式,人们认为他们的正则表达式只能匹配a
'a'
'b'
…啊,我明白了,我试着用逗号来分隔不同的值。此外,我没有使用^。(这不是一个“捕获组”,它是一个“角色类”。)我建议学习一些关于它们的知识。肯定会这样做。一般来说,我只是写无情的循环和检查每个字符对预定义的集。这至少快了100倍!与上面的答案相比,这个版本有什么好处?依我看,你的角色集中有太多的转义。它使模式更难阅读/理解。@James,这个答案在两个方面与我的不同。a) 它假设您只想捕获字符串的开头b)它使用更通用的正则表达式语法(如
~i
部分),这在.NET中是不必要的,因为您在构造正则表达式时指定了选项标志。