有沒有辦法匹配一個句子中的一組單詞?用於匹配一組單詞的正則表達式
要求是我想檢查一個句子是否包含以下詞po
或p.o
或p.o
或box
。但它不應該趕上郵政或沙箱。
PO - >錯誤
後 - >成功
箱 - >錯誤
河馬 - >更迭
在此先感謝
有沒有辦法匹配一個句子中的一組單詞?用於匹配一組單詞的正則表達式
要求是我想檢查一個句子是否包含以下詞po
或p.o
或p.o
或box
。但它不應該趕上郵政或沙箱。
PO - >錯誤
後 - >成功
箱 - >錯誤
河馬 - >更迭
在此先感謝
如果一個句子中包含的單詞「寶」,「寶」,或「盒子」的任意組合,這將返回一個函數(我已經包含這些的市值爲好):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略去
這應該做到這一點:
/\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」之後的下一個字符是句號或空格,則它應該匹配。如果它是一個字母(例如)它不應該,但是尾隨的「。」的出現。與檢查無關。
它應該在* postal中發現**帖子**嗎? – KooiInc 2011-04-27 12:53:05