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, '');