2012-10-10 113 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

相關問題