正则表达式使用javascript匹配数据表搜索功能中的逗号分隔字符串

时间:2014-04-15 04:38:19

标签: javascript jquery regex datatable

我有一个字符串

str="NA,No Therapis delivered,No Therapies Available,None,ATP,CVRT,CVRT x 2,No VT Available,Aborted CVRT,Aborted Defib,Defib,Defib(DBT)"

我想要一个匹配逗号分隔值的正则表达式。 我使用Datatable在表格中显示上面的字符串。 例如,如果我输入' cvrt'然后只有' cvrt'从上面的strin应该返回。 如果我输入“没有Therapis已发送”#39;然后只有#The;没有Therapis交付'应该回来。

由于我想做数据表搜索,split()方法对我不起作用。 唯一的选择是使用正则表达式。

先谢谢

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:(^|,)No Therapies Available(,|$)。这将查找一个特定单词,在No Therapies Available的情况下,前面是字符串的开头(^)或逗号(,)并且成功通过另一个逗号(,)或字符串的结尾($)。

根据this之前的问题,您可以使用exec来匹配并获取搜索结果的位置。

编辑:代码看起来像这样:

var searchText = ...;
var searchableText = ...;
var match = [];
var regex = "(^|,)(" + searchText + ")(,|$)/g"
while(match = regex.exec(searchableText)) != null)
{
    alert("Item found at " + match[1].index);
}

编辑2:

逗号将成为比赛的一部分,因为这些是模式的一部分。我更新的答案使用组来解决这个问题,这似乎不是你可以访问的。要绕过这个问题,你可以这样做:

var matchedText =  $('#example').dataTable().fnFilter( "(^|,)" + searchText + "(,|$)/g",columnIndex,true); //this should return a string of the form ',foobar,`
//We then proceed to clean the string by removing leading/trailing commas:
matchedText = matchedText.replace("^,", "");    //Remove leading commas.
matchedText = matchedText.replace(",$", "");    //Remove trailing commas.
alert("Matched Text: " + matchedText);