给定用户输入的数据,将其字段与我的数据库中的字段相匹配

时间:2015-04-20 21:38:51

标签: javascript regex pattern-matching

当用户上传带有标题的电子表格时,我会将其解析为JSON。然后,我需要将他们的字段与我的数据库中的字段匹配。例如,如果他们上传了fnamelname字段,我会认出这些字段,并将它们连接到我的数据库中的full name字段。

我的想法是根据正则表达式,列名和列位置编写模式。例如,Last Name的标题名称可能以“Last”或至少“L”开头。值可能具有[a-zA-Z]{2,20}的正则表达式模式,并且前一列的值(可能是名字)可能遵循相同的正则表达式模式。我会保持我的正则表达式简单&扫描记录样本以排除像“Jo Ann O'hoolihan”这样的边缘案例。

这种方法听起来合理吗?有人已经创造了类似的东西吗?当然,我会让用户确认算法猜对了,但我发现奇怪的是我发现的关于模式的信息很少。欢迎任何想法,评论或来源!

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

var fieldName = "First Name", dbColumn = "FName", s1, s2;
fieldName.length < dbColumn.length ? (s1 = fieldName, s2 = dbColumn ) : (s1 = dbColumn, s2 = fieldName); // (s1 must be the shorter string)
RegExp(s1.split("").join("(.*?)"), 'gi').test(s2);

将s1设为较短的字符串后,让每个字符在目标上匹配。

在此示例中,给定名为“First Name”,“F Name”,“FName”或甚至“F-NAME”,“First N”,“FN”等的JSON属性,它将匹配到数据库名称“FName”。