C# Regex以确定序列是否有任何特殊字符

C# Regex以确定序列是否有任何特殊字符,c#,regex,C#,Regex,我正在寻找一个正则表达式,以找出给定的单词序列有任何特殊字符 比如说 在这个输入字符串中 "test?test"; 我想知道你说了什么 "test(any special char(s) including space)test" 你可以使用 [^ a-Za-Z0-9] ,它将匹配任何不是字母数字的东西,但是当然它取决于你认为什么是“特殊字符”。如果下划线不是特别的,代码> > \W/可以是任何单词的快捷方式( -AZ-Z09< < /COD>)字符。 这里,你不需要真正的

我正在寻找一个正则表达式,以找出给定的单词序列有任何特殊字符

比如说

在这个输入字符串中

    "test?test";
我想知道你说了什么

    "test(any special char(s) including space)test" 

你可以使用<代码> [^ a-Za-Z0-9] ,它将匹配任何不是字母数字的东西,但是当然它取决于你认为什么是“特殊字符”。如果下划线不是特别的,代码> > \W/<代码>可以是任何单词的快捷方式(<代码> -AZ-Z09< < /COD>)字符。

这里,你不需要真正的正则表达式。例如,如果您想测试字母数字字符,您可以使用LINQ(或只是迭代字母):

Char.IsleterOrdigit
检查所有Unicode字母数字字符。如果你只想要英文的,你可以写:

public static bool IsEnglishAlphanumeric(char c)
{
    return ((c >= 'a') && (c <= 'z'))
        || ((c >= 'A') && (c <= 'Z'))
        || ((c >= '0') && (c <= '9'));
}

只是一个小小的注释:
[\W]
\W
相同。是的,非常正确。我有
[^\w]
,然后在最后一分钟切换了它,忘了删除char类括号。
public static bool IsEnglishAlphanumeric(char c)
{
    return ((c >= 'a') && (c <= 'z'))
        || ((c >= 'A') && (c <= 'Z'))
        || ((c >= '0') && (c <= '9'));
}
bool valid = input.All(IsEnglishAlphanumeric);