用于在字符串中查找模式的 Javascript 正则表达式,不包括可能的前面单词匹配

标签 javascript regex

变量中有一串文字/文本:

var copypaste, replaced;
var verbdb = ["keep","know","enjoy"];
var arrayLength = verbdb.length;

for (var i = 0; i < arrayLength; i++) {
    copypaste = "One of the reasons first_name keep waking up at night, is blah blah blah. Try this, let first_name know and see blah blah blah. Remember that first_name enjoy being challenged and blah blah blah.";

    replaced = copypaste.replace(RegExp("[^let]? first_name " + verbdb[i] + "(\s|\.)","g")," first_name " + verbdb[i] + "_object_s\$1");
}

我想从 replaced 变量中得到的是仅当 first_name 前面有单词 let 时才排除。

"One of the reasons first_name keep_object_s waking up at night, is blah blah blah. Try this, let first_name know and see blah blah blah. Remember that first_name enjoy_object_s being challenged and blah blah blah.";


所以在这个例子中:

  1. 第一个模式匹配(保留)并替换为添加的_object_s
  2. 第二个模式不匹配(知道)因为单词“let”,所以没有替换
  3. 第三个模式匹配(享受)并替换为添加的_object_s

最佳答案

你可以试试这个:

(?:\b)(?!let)(?=\w+\sfirst_name\s+(know|keep|enjoy))(\w+ \w+)\s+(\w+)

Explanation

const regex = /(?:\b)(?!let)(?=\w+\sfirst_name\s+(know|keep|enjoy))(\w+ \w+)\s+(\w+)/g;
const str = `One of the reasons first_name keep waking up at night, is blah blah blah. Try this, let first_name know and see blah blah blah. Remember that first_name enjoy being challenged and blah blah blah`;
const subst = `$2 _object_s`;

const result = str.replace(regex, subst);
console.log(result);

关于用于在字符串中查找模式的 Javascript 正则表达式,不包括可能的前面单词匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41689326/

相关文章:

javascript - 在 Javascript 中添加逗号时按索引替换文本

javascript - 作为参数传递给函数的字符串的大小限制

javascript - jQuery 和 JavaScript 都返回空白文本值

c# - 查找文本小写或大写

ruby - 正则表达式非字母数字但不是德语字符

java - 匹配 Java 正则表达式中的空格

java - 如何将一个变量一分为二?

javascript - 在不轮询更改的情况下响应服务器端渲染

javascript - 前导小数点可能与点混淆

Objective C 的 Javascript 语法荧光笔