正则表达式,如SQL

时间:2014-04-15 08:54:16

标签: asp.net sql regex

我有一个搜索字段表单,用于在aspx页面上插入filterexpression。 我想强制用户插入一个类似sql的字符串条件,所以它可以是:

  1. 是否以%开头,所以%?
  2. 写字母,数字,空格,下划线但不是像%这样的特殊字符,所以[A-Za-z0-9 -_ +()\ s] +
  3. 是否结束%,所以%?$
  4. 我的reg表达式是%?[A-Za-z0-9 -_ +()\ s] +%?$但它不起作用,因为我可以写%test%test%不是像sql那样条件。 我必须强制编写%test或test%或test或%test%但不是%test%test%,因为搜索进入错误页面。 这该怎么做? 感谢

1 个答案:

答案 0 :(得分:-2)

你非常接近,只是错过了字符串运算符^的开头。如果没有这个,你可以在输入的任何部分匹配你的正则表达式,这就是你能够匹配%test%test%之类的东西的原因。您所拥有的表达式将从第二个%开始匹配。

using System.Text.RegularExpressions;
using System;

public class Program{
    public static void Main(string[] args) {
        Regex rgx = new Regex(@"^%?[A-Za-z0-9-_+()\s]+%?$");

        Console.WriteLine(rgx.IsMatch("%test%"));  //True
        Console.WriteLine(rgx.IsMatch("%test %test%"));  //False
    }
}