Javascript 查找并删除与句子中的子字符串匹配的单词

Javascript 查找并删除与句子中的子字符串匹配的单词,javascript,regex,string,Javascript,Regex,String,是否可以使用正则表达式查找包含子字符串的句子中的所有单词 例如: var sentence = "hello my number is 344undefined848 undefinedundefined undefinedcalling whistleundefined"; 我需要找到这个句子中包含“未定义”的所有单词,并删除这些单词 Output should be "hello my number is "; 仅供参考-当前我将标记化(javascript)并遍历所有标记以查找和删除,

是否可以使用正则表达式查找包含子字符串的句子中的所有单词

例如:

var sentence = "hello my number is 344undefined848 undefinedundefined undefinedcalling whistleundefined";
我需要找到这个句子中包含“未定义”的所有单词,并删除这些单词

Output should be "hello my number is ";
仅供参考-当前我将标记化(javascript)并遍历所有标记以查找和删除,然后合并最终字符串。我需要使用正则表达式。请帮忙

谢谢

您可以使用:

str = str.replace(/ *\b\S*?undefined\S*\b/g, '');

这当然是可能的

比如单词的开头,零个或多个字母,“未定义”,零个或多个字母,单词的结尾

单词边界是字符类之外的
\b
,因此:

\b\w*?undefined\w*?\b
使用非贪婪重复避免字母匹配尝试匹配“未定义”并导致大量回溯

编辑
[a-zA-Z]
切换到
\w
,因为示例中的“单词”中包含数字

试试这个简单的正则表达式。替换为
空字符串
。参见演示


既然有足够多的正则表达式解决方案,下面是另一个解决方案-使用数组和简单函数查找字符串中出现的字符串:)

<>尽管代码看起来更“脏”,但它确实比正则表达式快,因此在处理<强>大<强>字符串

时,考虑它可能是有意义的。
    var sentence = "hello my number is 344undefined848 undefinedundefined undefinedcalling whistleundefined";
    var array = sentence.split(' ');
    var sanitizedArray = [];

    for (var i = 0; i <= array.length; i++) {
        if (undefined !== array[i] && array[i].indexOf('undefined') == -1) {
            sanitizedArray.push(array[i]);
        }
    }

    var sanitizedSentence = sanitizedArray.join(' ');

    alert(sanitizedSentence);
var-station=“你好,我的号码是344undefined848 UndefinedUndefinedCalling Whists Undefined”;
变量数组=句子分割(“”);
var sanitizedArray=[];

对于(var i=0;i您可以像这样使用str.replace函数

str = str.replace(/undefined/g, '');

为什么有这样的字符串?那些
未定义的
值来自哪里?字符串来自我无法控制的外部源(来自客户端)。我运行了一个快速性能测试,这个正则表达式是最快的。
str = str.replace(/undefined/g, '');