2016-11-14 107 views
0

傳遞給我的方法的輸入必須有所需的符號數。標誌的最小數量由另一個輸入參數動態指定。所以我準備了一個用於確認輸入的表達式,但問題是它無法在字符串內找到符號字符,並返回一個假值。 根據MSDN:正則表達式和符號

[character_group],匹配character_group中的任何單個字符。 默認情況下,匹配區分大小寫。

{N,},匹配前面的元素的至少n次。

我的方法:

public static bool HasSign(int minimChar, string input) 
     { 
      _pattern = "[[email protected]#$%^&*()_+={}[]\\|?/.><,~`]{" + minimChar + ",}"; 
      rgx=new System.Text.RegularExpressions.Regex(_pattern); 
      var res = rgx.Match(input); 
      return res.Success; 
     } 
+0

你能舉一個例子來工作與,例如輸入字符串,minimchar字符串? – BugFinder

回答

1

你的性格類過早到此結束,整個圖形是「破」:

_pattern = "[[email protected]#$%^&*()_+={}[]\\|?/.><,~`]{" + minimChar + ",}"; 
          ^

下它被從[[email protected]#$%^&*()_+={}[]字符類字符,並那麼子模式的一個序列\\|?/.><,~`]{2,}-1或|字符,/,任何字符但紐林e,>,<,,,~`,然後是2個或更多符號)。

請參閱what string it matches

你需要或者逃避]裏面,或者把它放在字符類開始,使用一個逐字字符串爲了使用\\匹配一個反斜槓:

_pattern = @"[][email protected]#$%^&*()_+={}[\\|?/.><,~`]{" + minimChar + ",}"; 
     ^^    ^^