正则表达式匹配C#中的Json数组元素

时间:2016-08-03 10:07:42

标签: c# json regex

我需要匹配c#中JSON数组元素的元素,以便在c#中过滤自动完成。这是我的代码:

string firstname = "h";
List<user> userlist = new List<user>();
user user1 = new user();
user1.firstname = "Hardik";
user1.lastname = "Gondalia";
userlist.Add(user1);

user user2 = new user();
user2.firstname = "John";
user2.lastname = "Abraham";
userlist.Add(user2);

user user3 = new user();
user3.firstname = "Will";
user3.lastname = "Smith";
userlist.Add(user3);

user user4 = new user();
user4.firstname = "Martin";
user4.lastname = "Luthor";
userlist.Add(user4);

var myRegex = new Regex(".*\\b" + firstname + "\\b.*");
var u = userlist.Where(i => myRegex.IsMatch(i.firstname)).ToList();
return Json(u, JsonRequestBehavior.AllowGet);

当我将字符“h”作为名字传递时,我得到的数字是u = 0; 我期待变量u中的user1和user2。

1 个答案:

答案 0 :(得分:1)

我发布了一个答案,因为这里有几个问题。

首先,这些名字不包含h作为整个单词,您在模式中定义\b以匹配名字作为整个单词。

其次,Hardik包含大写H(因此,您应该考虑将RegexOptions.IgnoreCase标志传递给myRegex)。

第三,Regex.IsMatch也会找到部分匹配,您的模式中根本不需要.*

根据代码判断,如果没有正则表达式,可以使用

userlist.Where(i => culture.CompareInfo.IndexOf(i.firstname, firstname, CompareOptions.IgnoreCase) >= 0).ToList()