C# Regex.IsMatch不';I don’我没有按预期工作

C# Regex.IsMatch不';I don’我没有按预期工作,c#,regex,C#,Regex,我希望代码:Regex.IsMatch(val.ToString(),“[{()}]”每次值是这类括号时都返回true。该代码在这些括号-{()}上有效,但在这些括号-[]上无效 这是为什么?我该如何修复它?此外,当我试图修复它并重新定位括号(如“{([])}”时,它引发了一个异常-为什么括号的位置很重要以及它如何影响代码?[…]匹配一组字符,但不包括[],因为它们是语法的一部分。你想要的是: Regex.IsMatch(val.ToString(),@"[\[{()}\]]") 因为它还包括

我希望代码:
Regex.IsMatch(val.ToString(),“[{()}]”
每次值是这类括号时都返回true。该代码在这些括号-{()}上有效,但在这些括号-[]上无效


这是为什么?我该如何修复它?此外,当我试图修复它并重新定位括号(如“{([])}”时,它引发了一个异常-为什么括号的位置很重要以及它如何影响代码?

[…]
匹配一组字符,但不包括
[]
,因为它们是语法的一部分。你想要的是:

Regex.IsMatch(val.ToString(),@"[\[{()}\]]")
因为它还包括
[
]
(转义)


(需要明确的是:上述语法与包含这些字符中任何一个的字符串相匹配。它不确保它包含适当的开头/结尾字符)

[…]
与一组字符匹配,但不包括
[]
,因为它们是语法的一部分。你想要的是:

Regex.IsMatch(val.ToString(),@"[\[{()}\]]")
因为它还包括
[
]
(转义)


(需要明确的是:上述语法与包含这些字符中任何一个的字符串相匹配。它不确保它包含适当的开头/结尾字符)

[…]
与一组字符匹配,但不包括
[]
,因为它们是语法的一部分。你想要的是:

Regex.IsMatch(val.ToString(),@"[\[{()}\]]")
因为它还包括
[
]
(转义)


(需要明确的是:上述语法与包含这些字符中任何一个的字符串相匹配。它不确保它包含适当的开头/结尾字符)

[…]
与一组字符匹配,但不包括
[]
,因为它们是语法的一部分。你想要的是:

Regex.IsMatch(val.ToString(),@"[\[{()}\]]")
因为它还包括
[
]
(转义)


(需要明确的是:上面的语法匹配包含这些字符中任何一个的字符串。它不能确保它包含适当的开头/结尾字符)

这可以通过一种比正则表达式更简单(如果需要的话,更快)的方法来解决

硬编码字符范围:

switch (val.ToString()) {
    case "{":
    case "}":
    case "(":
    case ")":
    case "[":
    case "]":
        // match!
        break;
}
var chars = "[]{}()".ToCharArray();
var str = val.ToString();

if (str.Length == 1 && str.IndexOfAny(chars) == 0) {
    // match!
}
可配置的字符范围:

switch (val.ToString()) {
    case "{":
    case "}":
    case "(":
    case ")":
    case "[":
    case "]":
        // match!
        break;
}
var chars = "[]{}()".ToCharArray();
var str = val.ToString();

if (str.Length == 1 && str.IndexOfAny(chars) == 0) {
    // match!
}

这可以通过一种比正则表达式更简单(更快速,如果需要的话)的方法来解决

硬编码字符范围:

switch (val.ToString()) {
    case "{":
    case "}":
    case "(":
    case ")":
    case "[":
    case "]":
        // match!
        break;
}
var chars = "[]{}()".ToCharArray();
var str = val.ToString();

if (str.Length == 1 && str.IndexOfAny(chars) == 0) {
    // match!
}
可配置的字符范围:

switch (val.ToString()) {
    case "{":
    case "}":
    case "(":
    case ")":
    case "[":
    case "]":
        // match!
        break;
}
var chars = "[]{}()".ToCharArray();
var str = val.ToString();

if (str.Length == 1 && str.IndexOfAny(chars) == 0) {
    // match!
}

这可以通过一种比正则表达式更简单(更快速,如果需要的话)的方法来解决

硬编码字符范围:

switch (val.ToString()) {
    case "{":
    case "}":
    case "(":
    case ")":
    case "[":
    case "]":
        // match!
        break;
}
var chars = "[]{}()".ToCharArray();
var str = val.ToString();

if (str.Length == 1 && str.IndexOfAny(chars) == 0) {
    // match!
}
可配置的字符范围:

switch (val.ToString()) {
    case "{":
    case "}":
    case "(":
    case ")":
    case "[":
    case "]":
        // match!
        break;
}
var chars = "[]{}()".ToCharArray();
var str = val.ToString();

if (str.Length == 1 && str.IndexOfAny(chars) == 0) {
    // match!
}

这可以通过一种比正则表达式更简单(更快速,如果需要的话)的方法来解决

硬编码字符范围:

switch (val.ToString()) {
    case "{":
    case "}":
    case "(":
    case ")":
    case "[":
    case "]":
        // match!
        break;
}
var chars = "[]{}()".ToCharArray();
var str = val.ToString();

if (str.Length == 1 && str.IndexOfAny(chars) == 0) {
    // match!
}
可配置的字符范围:

switch (val.ToString()) {
    case "{":
    case "}":
    case "(":
    case ")":
    case "[":
    case "]":
        // match!
        break;
}
var chars = "[]{}()".ToCharArray();
var str = val.ToString();

if (str.Length == 1 && str.IndexOfAny(chars) == 0) {
    // match!
}

你想要实现什么?你想要实现什么?你想要实现什么?你想要实现什么?