正则表达式在特定单词之前/之后找到单词/两个单词

时间:2012-10-10 16:45:17

标签: javascript regex

我想在html中找到一个单词,也希望得到单词前后的单词。 this问题给出了答案(?:\ S + \ s)?\ S text \ S (?:\ s \ S +)?并使用c#。但是不适用于javascript。 Javascript看起来不支持?:
有什么想法吗?

例如

  

Woobox是一个已有两年历史的社交营销平台,最近在其优惠券应用程序中添加了对Apple Passbook的支持。该集成允许企业使用其系统创建Passbook优惠券,甚至可以要求客户在获得优惠券之前执行某种社交活动。例如,他们可能必须在Facebook上“喜欢”该品牌或在Twitter上关注它们。但该公司还刚刚添加了另一项功能,可以在小型企业级别上真正促进Passbook的采用:通过SMS支持Passbook优惠券。

当我搜索“优惠券”时,我应该得到四个结果:'优惠券应用','使用存折优惠券','优惠券。','存折优惠券'

2 个答案:

答案 0 :(得分:1)

如果

(?:\S+\s)?\S*text\S*(?:\s\S+)?

在JavaScript中不起作用,你使用它是错误的(或者你需要通过“工作”来定义你的意思)。很可能你没有使用正确的语法来构造一个正则表达式:

var myregexp = /(?:\S+\s)?\S*text\S*(?:\s\S+)?/;

或如何在字符串中找到匹配项:

var match = myregexp.exec(subject);
if (match != null) {
    result = match[0];
} 

答案 1 :(得分:0)

JavaScript 支持non-matching group语法(?:…)。它甚至支持lookahead,它可能对您的任务有用,只是它不支持lookbehind。