我有一个简单的列表,例如:
健康,保健,健康选择
我的搜索字词是" Health"。在搜索" Health"我不想匹配"医疗保健"和#34;健康选择"因为从技术上讲,这些是列表中的不同项目。
在阅读了Regex文档后,我发现我应该使用lookbehind来检查前面的文本。但据我所知,JS正则表达式中没有这些选项。
总之,我需要匹配组中的特定值,其中组是逗号之前/之后的术语。
答案 0 :(得分:0)
如果您确实需要使用正则表达式,以下方法将起作用:
var str = "Cat Health, Health, Health Care, Health Options",
reg = /(?:[^,], )*(Health)(?:, [^,])*/;
alert(str.match(reg)[1]);
// -> Health
正则表达式说明:
请注意,Javascript Regex中没有后瞻,请参阅:
Positive look behind in JavaScript regular expression
按照评论中的建议以编程方式执行此操作(假设列表项始终用逗号分隔,然后用空格分隔):
var str = "Cat Health, Health, Health Care, Health Options"
var list = str.split(/, /);
var a = list.indexOf("Health");
// a = -1 if not found, otherwise contains the index of "Health" in the list