我正在尝试使用正则表达式(javascript)解析以下句子:

  • 我希望电视
  • 我要一些巧克力
  • 我需要火

  • 目前,我正在尝试:I(\b[a-zA-Z]*\b){0,5}(TV|chocolate|fire),但是它不起作用。我也用\w做了一些测试,但是没有运气。

    我想允许预定义“I”和最后一个单词之间的任何单词(最多5个单词)。

    最佳答案

    要说明单词之间的非单词字符,您可以使用

    /I(?:\W+\w+){0,5}\‌​W+(?:TV|chocolate|fir‌​e)/
    

    regex demo

    关键是您添加了单词边界,但没有考虑“单词”之间的空格,标点符号等(所有其他非单词字符)。

    模式详细信息:
  • I-匹配左定界符
  • (?:\W+\w+){0,5}\‌​W+-匹配0到5个序列(由于limiting quantifier {n,m} ),其中包含1+个非单词字符(\W+)和其后的1+个单词字符(\w+),最后的\W+匹配1个或多个非单词字符必须存在才能将最后匹配的单词字符与...
  • 分开
  • (?:TV|chocolate|fir‌​e)-匹配尾随定界符
  • 09-18 14:48