是否可以使用正则表达式查找包含子字符串的句子中的所有单词?
示例:
var sentence = "hello my number is 344undefined848 undefinedundefined undefinedcalling whistleundefined";
我需要找到包含'undefined'的句子中的所有单词并删除这些单词。
Output should be "hello my number is ";
仅供参考 - 目前我将其标记为(javascript)并遍历所有标记以查找和删除,然后合并最终字符串。我需要使用正则表达式。请帮忙。
谢谢!
答案 0 :(得分:4)
答案 1 :(得分:3)
当然有可能。
类似于单词开头,零个或多个字母,"未定义",零个或多个字母,单词结尾应该这样做。
字符边界在字符类之外是\b
,所以:
\b\w*?undefined\w*?\b
使用非贪婪的重复来避免字母匹配的tryig匹配" undefined"并导致大量的回溯。
修改 切换[a-zA-Z]
至\w
,因为该示例包含"字"中的数字。
答案 2 :(得分:2)
答案 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);
答案 4 :(得分:0)
你可以像这样使用str.replace函数
str = str.replace(/undefined/g, '');