我有一个字符串
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()方法对我不起作用。 唯一的选择是使用正则表达式。
先谢谢
答案 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);