正则表达式跳过某些字符

Regex to skip certain characters

我想编写一个正则表达式,它会跳过像 <> 这样的字符。 Reason

现在,为了表示这一点,我遇到了 this [^<>] 并尝试在控制台应用程序中使用它,但它不起作用。

[^<>]

Debuggex Demo

string value = "shubh<";
string regEx = "[^<>]";
Regex rx = new Regex(regEx);

if (rx.IsMatch(value))
{
    Console.WriteLine("Pass");
}
else { Console.WriteLine("Fail"); }
Console.ReadLine();

字符串'shubh<'应该会失败,但我不确定它为什么会通过匹配。我在做什么垃圾吗?

来自 Regex.IsMatch Method (String):

Indicates whether the regular expression specified in the Regex constructor finds a match in a specified input string.

[^<>] 可在 shubh< 中找到(sh 等)。

您需要使用 ^$ 锚点:

Regex rx = new Regex("^[^<>]*$");
if (rx.IsMatch(value)) {
    Console.WriteLine("Pass");
} else {
    Console.WriteLine("Fail");
}

另一种解决方案是检查是否包含 <>

Regex rx = new Regex("[<>]");
if (rx.IsMatch(value)) {
    Console.WriteLine("Fail");
} else {
    Console.WriteLine("Pass");
}