我有一个搜索字段表单,用于在aspx页面上插入filterexpression。 我想强制用户插入一个类似sql的字符串条件,所以它可以是:
我的reg表达式是%?[A-Za-z0-9 -_ +()\ s] +%?$但它不起作用,因为我可以写%test%test%不是像sql那样条件。 我必须强制编写%test或test%或test或%test%但不是%test%test%,因为搜索进入错误页面。 这该怎么做? 感谢
答案 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
}
}