2016-06-21 70 views
1

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

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

上面的代码返回为“假”。请让我知道我是否错过了任何东西。

回答

3

Regex类有图案中的转义字符的特殊方法:Regex.Escape()

改变这样的代码:

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

你必须逃生$,因为它是一种特殊的(保留)字符,这意味着 “字符串的结束”。如果.表示只有点(比如说,小数点分隔符),你必须逃脱它,以及(在不越狱,.意味着“任何符号”):

string pattern = @"\$0\.00"; 

bool result = RegEx.IsMatch(text, pattern); 

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

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

,但不能跟着...

+0

谢谢。我如何以通用的方式检查模式?在我的问题中,它是已知的价值...有没有更简单的方法来检查任何文本的通用方式的模式? –

+0

@Neelakandan K:您可能会发现有用的https://regex101.com/,您可以在其中测试模式并进行解释。 –

+0

谢谢。仅供参考。 Regex.Escape方法是解决方案 –

2

两个”串的结束。 “和'$'是特殊字符,因此如果要匹配字符本身,则需要将其转义。 ''匹配任何字符和“$”字符串

看到战争的结束一致:https://regex101.com/r/pK2uY6/1