用于匹配一组单词的正则表达式

时间:2011-04-27 12:22:34

标签: javascript regex

有没有办法匹配句子中的一组单词?

要求是我想检查一个句子是否包含以下单词pop.op.obox。但它不应该抓住帖子或沙箱。

po - >错误

发布 - >成功

框 - >错误

hippo - >更迭

提前致谢

4 个答案:

答案 0 :(得分:1)

使用\ b来捕捉单词边界。

正则表达式片段:

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

仅在句子包含单词po或单词p.o。

时匹配

答案 1 :(得分:1)

如果一个句子包含单词“po”,“po”或“box”的任意组合将返回的函数(我也包括了这些单词的大小写):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 - >单词边界(空格或句点之前的空格或最后一个字母后面的第一个字母)

p - > 'P'

\.? - >可选'。'

o - > 'O'

\b - >字边界

\.? - >可选'。'

| - > “或”

\b - >字边界

(box) - > '盒子'

\b - >字边界

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

i - >不区分大小写

答案 2 :(得分:1)

应该这样做:

/\b(p\.?o|box)\b/g
  • 第一个\b匹配单词组的开头
  • ( . . . )设置匹配组
  • p\.?o是第一个模式,匹配“p”,“o”与“p”之后的可选句点(“。”)匹配
  • “|”说匹配第一个模式第二个模式
  • box是第二个模式,只匹配单词“box”:)
  • 第二个\b匹配单词组的结尾
  • g使模式“贪婪”,以便尽可能多地匹配模式

如果您希望它不区分大小写,请在模式的末尾包含“i”参数:

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

修改:为了简化模式,我删除了“o”之后的\.?。自“。”必须是模式中的最后一个字符,匹配“p.o”没有区别。和“p.o”。 。 。如果“p.o”之后的下一个字符是句号或空格,则它应该匹配。如果它是一个字母(例如)它不应该,但存在尾随“。”与支票无关。

答案 3 :(得分:0)

喜欢sh54的回复,但没有|块。

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

这将是数学po,p.o。,框以及包含框的任何组合。