2012-10-10 86 views
-2

我想在html中找到一个单词,也希望得到单词前后的单词。 this问题通过使用(?:\ S + \ s)给出答案?\ S text \ S(?:\ s \ S +)?并使用C#。但不适用于JavaScript。 Javascript看起来像不支持?:
任何想法?正则表达式在特定单词之前/之后找到单词/两个单词

例如

Woobox,一个两岁的社会化营销平台,最近增加了对苹果公司在其优惠券应用存折的支持。这种整合让企业可以使用其系统创建存折优惠券,甚至可以要求客户在获得优惠券之前执行某种社交行为。例如,他们可能不得不在Facebook上“喜欢”品牌或在Twitter上关注他们。但该公司刚刚增加了另一个功能,可以在小企业层面真正推动Passbook的采用:支持通过SMS发送Passbook优惠券。

当我搜索“优惠券”,我应该得到4个结果:“它的优惠券应用”,“使用存折消费券”,“优惠券”,“存折优惠券在”

+1

JavaScript确实支持'(?:...)' - 你的问题到底在哪里? –

+1

有些代码需要显示吗? – VKen

+0

请把整个问题放在这个问题上。不要让我们去找另一个问题来找出你要问的问题。 – jfriend00

回答

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]; 
} 
+0

我的代码工作正常,使用其他正则表达式,但不能通过使用此正则表达式得到错误结果。当搜索'或'但得到'世界' – atu0830

+0

我不明白你在那里写了什么。我怀疑你想使用单词边界(搜索'\ bor \ b'而不是'或')。 –

+0

我搜索'优惠券',它工作正常,可以得到'优惠券'的结果,但也可以得到'优惠券',所以我在搜索词前后添加'\ b',只能得到'优惠券',做不包括围绕'优惠券'的话。 – atu0830

0

的JavaScript 支持语法(?:…)。它甚至支持lookahead这可能对你的任务有用,只是它不支持向后看。

+0

我应该逃避吗?:''like'\\ ?:' – atu0830

+0

不,只要你想匹配一个问号和一个冒号 – Bergi

相关问题