正则表达式和标志

时间:2016-11-14 09:45:08

标签: c# regex

传递给我的方法的输入必须具有所需数量的符号。最小符号数由另一个输入参数动态指定。所以我准备了一个用于确认输入的表达式,但问题是它无法在字符串中找到符号字符并返回false值。 根据MSDN:

  

[character_group],匹配character_group中的任何单个字符。   默认情况下,匹配区分大小写。

  

{n,},匹配前一个元素至少n次。

我的方法:

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

1 个答案:

答案 0 :(得分:1)

你的角色类在这里过早结束,整个模式被“破坏”:

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

匹配来自[!@#$%^&*()_+={}[]字符类的字符,然后匹配子模式的序列\\|?/.><,~`]{2,} - 1或0 |字符,{{ 1}},除了换行符之外的任何字符,/><,~,然后是2个或更多`符号)。

请参阅what string it matches

您需要转义]内部,或者将其放在字符类开头并使用逐字字符串文字,以便使用]来匹配反斜杠:

\\