带有负后视的 Javascript 正则表达式(回顾)

标签 javascript regex

我希望有人可以检查我的正则表达式,以确保它正在执行我希望它执行的操作。

所以这就是我所追求的:

  1. 在单词边界内搜索单词 - 因此它可以是单独的单词,也可以是另一个单词中的单词
  2. 获取前面的 30 个字符(如果前面的字符存在),但前提是它们包含我要搜索的词。
  3. 抓取接下来的 30 个字符(如果存在)

因此,如果我搜索“汽车”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}

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

最佳答案

需要对您的正则表达式进行细微更改。

最后一个.{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

关于带有负后视的 Javascript 正则表达式(回顾),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34236403/

相关文章:

javascript - 语法错误 : missing ; before statement {"version":3 ,"file" :"jquery-2.1.0.min.js" ,"sources": ["jquery-2.1.0.js"

python - python 正则表达式替换中的 if 语句

javascript - alfresco aikau 中的 "remote"对象是什么?

javascript - 重组 CSV 文件?

javascript - 如何在我们的应用程序中使用此 sencha 触摸图像?

javascript - Youtube API 检测自动播放是否被禁用

python - RE 处理两种格式

java - 解析不在逗号之间的空格的简短方法?

重复字符的 JavaScript 正则表达式规则

regex - 正则表达式提取所有以冒号开头的单词