2011-04-27 52 views
0

有沒有辦法匹配一個句子中的一組單詞?用於匹配一組單詞的正則表達式

要求是我想檢查一個句子是否包含以下詞pop.op.obox。但它不應該趕上郵政或沙箱。

PO - >錯誤

後 - >成功

箱 - >錯誤

河馬 - >更迭

在此先感謝

+1

它應該在* postal中發現**帖子**嗎? – KooiInc 2011-04-27 12:53:05

回答

1

使用\ b抓住單詞邊界。

正則表達式片段:

\b(po|p\.o)\b 

將只匹配如果一個句子中包含單詞po或者口服字

+0

這將不匹配所有的'p.o.',它將匹配'po'和'p.o'(沒有期間o) – allicarn 2013-10-30 18:04:08

+0

它也不匹配「盒子」。 – talemyn 2013-10-30 18:36:36

0

像sh54的迴應,但沒有|塊。

\b(p\.?o\.?)\b 

這將數學po,p.o.,框和包含框的任何組合。

+0

這不符合「框」。它會匹配'po'或'p.o.' – allicarn 2013-10-30 17:55:50

+0

這已經有一段時間了,但我指的是在第一個()分組內。顯然,Box仍然需要遵循這一點。不知道爲什麼我省略了。您對| @allicarn這個缺失的方框是正確的 – ButtersB 2016-01-21 06:54:28

0

如果一個句子中包含的單詞「寶」,「寶」,或「盒子」的任意組合,這將返回一個函數(我已經包含這些的市值爲好):jsfiddle

function containsPObox(sentence) { 
    var matches = sentence.match(/\bp\.?o\b\.?|\b(box)\b/gi); 
    return (matches && matches.length > 0)?true:false; 
} 

關於正則表達式:/\bp\.?o\b\.?|\b(box)\b/gi

其分解...

\b - >字邊界(跟隨着第一個字母g的空間或時間段)

p之前的空間中或最後一個字母 - >的 'p'

\.? - ''>可選

o - >的 'o'

\b - >字邊界

\.? - >可選的」。「

| - > 」或「

\b - >字邊界

(box) - > '盒子'

\b - >字邊界

/g - 在句子>的任何地方

i - > case insensi略去

0

這應該做到這一點:

/\b(p\.?o|box)\b/g 
  • 第一\b的單詞組
  • (. . .)的開頭匹配設置一個匹配組
  • p\.?o是第一個模式,即在「p」之後用「p」和「o」之間的可選句點(「。」)匹配「p」和「o」說的第一圖案第二圖案
  • box是第二種模式,即只匹配單詞「盒子」 :)
  • 第二\b的單詞組的結尾匹配匹配
  • g品牌模式「貪婪」,所以它會匹配儘可能多的屁股可以在模式

,如果你想它是區分大小寫的,包括在該模式的最後的「我」參數:

/\b(p\.?o|box)\b/gi <--- right here 

編輯:爲了簡化模式,我刪除了「o」後面的\.?。由於「。」必須是模式中的最後一個字符,匹配「p.o.」時沒有區別和「p.o」。 。 。如果「p.o」之後的下一個字符是句號或空格,則它應該匹配。如果它是一個字母(例如)它不應該,但是尾隨的「。」的出現。與檢查無關。

相關問題