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

时间:2015-01-02 08:36:42

标签: javascript regex string

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

示例:

var sentence = "hello my number is 344undefined848 undefinedundefined undefinedcalling whistleundefined";

我需要找到包含'undefined'的句子中的所有单词并删除这些单词。

Output should be "hello my number is ";

仅供参考 - 目前我将其标记为(javascript)并遍历所有标记以查找和删除,然后合并最终字符串。我需要使用正则表达式。请帮忙。

谢谢!

5 个答案:

答案 0 :(得分:4)

您可以使用:

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

RegEx Demo

答案 1 :(得分:3)

当然有可能。

类似于单词开头,零个或多个字母,"未定义",零个或多个字母,单词结尾应该这样做。

字符边界在字符类之外是\b,所以:

\b\w*?undefined\w*?\b

使用非贪婪的重复来避免字母匹配的tryig匹配" undefined"并导致大量的回溯。

修改 切换[a-zA-Z]\w,因为该示例包含"字"中的数字。

答案 2 :(得分:2)

\S*undefined\S*

试试这个简单的regex.Replace by empty string。见demo。

https://www.regex101.com/r/fG5pZ8/5

答案 3 :(得分:0)

由于有足够的正则表达式解决方案,这里有另一个 - 使用数组和简单函数查找字符串中出现的字符串:)

即使代码看起来更多"脏",它实际上比正则表达式更快,所以在处理 LARGE 字符串

时考虑它可能是有意义的
    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);

小提琴:http://jsfiddle.net/448bbumh/

答案 4 :(得分:0)

你可以像这样使用str.replace函数

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