1.C#中调用正则表达式
2.正则表达式主要用来断断传过来的字符串中是否存在大括号,中括号,单引号,双引号({}[]'")等六个特殊字符,且字字符串长度不超过20个字符
3.要求调用Regex.IsMatch返回false。
4.谢谢了。

解决方案 »

  1.   

    5楼说的有道理
    是这样的,我要实现的功能是
    第一步:判断字符串长度如果超过20直接报错,不用断断里面包含不包含{}[]'"等字符
    第二步:如果字符串长度如果不超过20,进一步来判断字符里是否包含{}[]'"等字符中的(只要包含其中的任何一个都算),如果包含则要求调用Regex.IsMatch返回false
    这会说清楚了吧
      

  2.   

    string str="你的字符串";
    return (str.Length>20)||!Regex.IsMatch(str,@"['""\[\]}{]");
      

  3.   

    试了一下,必须是 {0,20},而不能写成 {,20}
    using System; 
    using System.Text.RegularExpressions;class Program
    {
      static void Main()
      {
        string pattern = @"^[^'\""\[\]\{\}]{0,20}$";
        Regex  regex   = new Regex(pattern);
        foreach (string s in new string[]{ "abc", "who'm i", "[]"  } )
        {
          Console.WriteLine("{0} -> {1}", s, regex.IsMatch(s));
        }
      }
    }
    /* 程序输出:
    abc -> True
    who'm i -> False
    [] -> False
    */
                                 
      

  4.   

    string str="你的字符串";
    return !(str.Length>20)||!Regex.IsMatch(str,@"['""\[\]}{]");//如果长度超过20或者包含{}[]'"字符,则返回false当然,4楼的正则是对的。
      

  5.   


    请看 msdn:
    http://msdn.microsoft.com/zh-cn/library/3206d374.aspx.NET Framework 开发人员指南
    限定符可以有 {n,} 这种写法,表示 {n,∞} 的意思。但没有 {,m} 这种写法。
      

  6.   


    不好意思,4楼的不正确:    string pattern = @"^[^'\""\[\]\{\}]{,20}$";
        Regex  regex   = new Regex(pattern);
        string s = "abc";
        Console.WriteLine("{0} -> {1}", s, regex.IsMatch(s));
        // 输出:abc -> False主要是被1楼的写法我是这样加的可是没起到作用 
    ^(?!.*?[{}\[\]\"']){,20} 
    误导了。
    10楼的是正确的。
      

  7.   

    谢谢 wuyi8808 指点我,一直帮我把问题解决!以后不懂的再向你请教。
      

  8.   

    sorry,18楼说错了,应该用到顺序环视: (?=...)
    @"^(?=.*['\""\[\]\{\}]).{0,20}$"
      

  9.   


    u're right.
      

  10.   

    我还有一个问题:
    1.把XML数据读取到dataGridView1 中,显示出来,
    读取方法
            public void BindPLxml()
            {
                set.ReadXml("PlanList.xml"); //用Set来读取XML文件
                dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;//列标题居中显示
                dataGridView1.DataSource = set.Tables[0].DefaultView;//设置datagridview的数据源  
            }
    在窗体上,设置属性的时候,我在dataGridView1 中加了三个列,取的列名全为中文,可是读取到datagridview中,却总多一列,而那多的一列我在窗体上根本没有绑定列的字段,(XML中有四个结点,而我要求在dataGridView1中只显示三个,可是我上面写的他却就一直绑定四列),要怎么解决?