C# 当文本包含“时,Regex.IsMatch不起作用”$&引用;

C# 当文本包含“时,Regex.IsMatch不起作用”$&引用;,c#,winforms,C#,Winforms,在检查以下条件时,Regex.IsMatch方法返回错误的结果 string text = "$0.00"; Regex compareValue = new Regex(text); bool result = compareValue.IsMatch(text); 上述代码返回为“False”。如果我遗漏了什么,请告诉我。“$”是C#regex中的一个特殊字符。先逃离它 Regex compareValue = new Regex(@"\$0\.00"); bool result = co

在检查以下条件时,Regex.IsMatch方法返回错误的结果

string text = "$0.00";
Regex compareValue = new Regex(text);
bool result = compareValue.IsMatch(text);
上述代码返回为“False”。如果我遗漏了什么,请告诉我。

“$”是C#regex中的一个特殊字符。先逃离它

Regex compareValue = new Regex(@"\$0\.00");
bool result = compareValue.IsMatch("$0.00");
正则表达式:

“$”是C#Regex中的一个特殊字符。先逃离它

Regex compareValue = new Regex(@"\$0\.00");
bool result = compareValue.IsMatch("$0.00");
正则表达式:

您必须转义
$
,因为它是一个特殊(保留)字符,表示“字符串结束”。如果
仅表示点(例如,小数点分隔符),则必须将其转义(如果未转义,
表示“任何符号”):

至于您的原始模式,它没有机会匹配任何字符串,因为
$0.00
意味着

   $ end of string, followed by
   0 zero
   . any character
   0 zero
   0 zero
但是字符串末尾不能跟…

您必须转义
$
,因为它是一个特殊(保留)字符,表示“字符串末尾”。如果
仅表示点(例如,小数点分隔符),则必须将其转义(如果未转义,
表示“任何符号”):

至于您的原始模式,它没有机会匹配任何字符串,因为
$0.00
意味着

   $ end of string, followed by
   0 zero
   . any character
   0 zero
   0 zero

但是字符串末尾不能跟…

这两个字符。“”和“$”都是特殊字符,因此如果要匹配字符本身,则需要对它们进行转义。“”匹配任何字符,“$”匹配字符串的结尾


请参阅:

两个“.”和“$”都是特殊字符,因此如果要匹配字符本身,则需要将它们转义匹配任何字符,“$”匹配字符串的结尾


请参阅:

Regex类有一种特殊的方法用于转义模式中的字符:

按如下方式更改代码:

string text = "$0.00";
Regex compareValue = new Regex(Regex.Escape(text)); // Escape characters in text
bool result = compareValue.IsMatch(text);

Regex
类有一种特殊的方法来转义模式中的字符:

按如下方式更改代码:

string text = "$0.00";
Regex compareValue = new Regex(Regex.Escape(text)); // Escape characters in text
bool result = compareValue.IsMatch(text);

谢谢如何以常规方式检查模式?在我的问题中,它是已知值…有没有更简单的方法来检查任何文本的通用方式的模式?@Neelakandan K:你可能会发现在哪里测试模式并解释它们很有用。谢谢。仅供参考。Escape方法是solution@NeelakandanK:我知道;但是要小心使用
Regex.Escape
:通常您希望字符串结尾使用unescaped
$
,任何字符使用
,谢谢。如何以常规方式检查模式?在我的问题中,它是已知值…有没有更简单的方法来检查任何文本的通用方式的模式?@Neelakandan K:你可能会发现在哪里测试模式并解释它们很有用。谢谢。仅供参考。Escape方法是solution@NeelakandanK:我知道;但是要小心使用
Regex.Escape
:通常,您希望字符串结尾使用unescape
$
,任何字符使用
。。。