带有负面lookbehind的Javascript正则表达式(评论)

时间:2015-12-12 04:52:31

标签: javascript regex

我希望有人可以查看我的正则表达式,以确保它正在做我想做的事。

所以这就是我追求的目标:

  1. 在单词边界内搜索单词 - 因此它可以是单独的单词,也可以是单词中的单词
  2. 抓取前30个字符(如果前面的字符存在),但前提是包含我要搜索的字词。
  3. 抓取接下来的30个字符(如果存在)
  4. 因此,如果我在寻找“汽车”为1,我有:

    (\b\w*car\w*\b)
    

    2,我有:

    ((?!\b\w*car\w*\b).{30}|.{0,30})
    

    对于3,我有:

    .{0,30}
    

    所有在一起:

    ((?!\b\w*car\w*\b).{30}|.{0,30})(\b\w*car\w*\b).{0,30}
    

    我做对了,这会做我想要的吗?

1 个答案:

答案 0 :(得分:1)

您的正则表达式需要稍作修改。

最后.{0, 30}需要放入一个小组。完整的正则表达式就变成了这个:

/((?!\b\w*car\w*\b).{30}|.{0,30})(\b\w*car\w*\b)(.{0,30})/

如果你在javascript控制台中运行它,你可以看到输出:

var str = "I'm an psychodelic purple and green electric smartcar that goes insanely really fast and can lap the Earth on a single charge"
var match = str.match(/((?!\b\w*car\w*\b).{30}|.{0,30})(\b\w*car\w*\b)(.{0,30})/);

alert(
  "Word containing car: " + match[2] +
  "\nFirst 30: " + match[1] +
  "\nLast 30: " + match[3]
);

您应该收到以下警告消息:

Word containing car: smartcar
First 30: lic purple and green electric 
Last 30:  that goes insanely really fas
相关问题