Javascript 如何使用正则表达式忽略字符串替换中的某些单词
我有包含5到6个单词的字符串,我想用荧光笔样式替换一些单词Javascript 如何使用正则表达式忽略字符串替换中的某些单词,javascript,regex,replace,Javascript,Regex,Replace,我有包含5到6个单词的字符串,我想用荧光笔样式替换一些单词 $(document).ready(function() { var str = "Micromax Samsung S3 Microsoft Galaxy S"; var arr = ["Micro", "s"]; arr.forEach(function(item) { str = str.replace(new RegExp(item.replace(/\+/g, "\\+"),
$(document).ready(function() {
var str = "Micromax Samsung S3 Microsoft Galaxy S";
var arr = ["Micro", "s"];
arr.forEach(function(item) {
str = str.replace(new RegExp(item.replace(/\+/g, "\\+"), "g"), '<span class="red">'+ item +'</span>');
})
$('#dvHtml').html(str);
});
$(文档).ready(函数(){
var str=“Micromax三星S3微软Galaxy S”;
var arr=[“微”、“s”];
arr.forEach(功能(项目){
str=str.replace(新的RegExp(item.replace(/\+/g,“\\+”,“g”),“+item+”);
})
$('#dvHtml').html(str);
});
但我得到了整个字符串中的每个s,包括但我不想替换
任何机构能否帮助我从替换中排除或忽略以下项目
Micro
替换Micro,用s
替换s
以下是输出
不要重新发明轮子。这里有一个处理该问题的突出显示插件:
希望能有帮助。来自玻利维亚拉巴斯的欢呼声不要重新发明轮子。这里有一个处理该问题的突出显示插件:
希望能有帮助。干杯,来自玻利维亚拉巴斯您需要像这样更改您的regexp
var str = "Micromax Samsung S3 Microsoft Galaxy S";
var arr = ["Micro", "s"];
var t = str.replace(new RegExp('\\b('+arr.join('|')+')',"gi"), '<span class="red">$1</span>');
$('#dvHtml').html(t);
var str=“Micromax三星S3微软Galaxy S”;
var arr=[“微”、“s”];
var t=str.replace(新的RegExp('\\b('+arr.join('|')+'),“gi”),“$1”);
$('#dvHtml').html(t);
在这个
-在begin word中查找\b
-返回类似于arr.join(“|”)
的字符串-因此找到其中任何一个a | b
-用于gi
和global
忽略大小写的标志
您可以在上试用。您需要更改regexp,类似这样的内容
var str = "Micromax Samsung S3 Microsoft Galaxy S";
var arr = ["Micro", "s"];
var t = str.replace(new RegExp('\\b('+arr.join('|')+')',"gi"), '<span class="red">$1</span>');
$('#dvHtml').html(t);
var str=“Micromax三星S3微软Galaxy S”;
var arr=[“微”、“s”];
var t=str.replace(新的RegExp('\\b('+arr.join('|')+'),“gi”),“$1”);
$('#dvHtml').html(t);
在这个
-在begin word中查找\b
-返回类似于arr.join(“|”)
的字符串-因此找到其中任何一个a | b
-用于gi
和global
忽略大小写的标志
您可以在上试用,这里有另一个解决方案
function escapeRegExp(str) {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
function highlight(str, needle){
var parts = str.split(/<[/]?span.*?>/gi);
for(var i=0; i<parts.length; i++){
if(i%2 == 0){
parts[i] = parts[i].replace(new RegExp("("+escapeRegExp(needle)+")", 'gi'), '<span class="red">$1</span>');
}else{
parts[i] = '<span class="red">'+ parts[i] +'</span>';
}
}
return parts.join('');
}
$(document).ready(function() {
var str = "Micromax Samsung S3 Microsoft Galaxy S";
var arr = ["Micro", "S"];
arr.forEach(function(item) {
str = highlight(str, item);
});
console.log(str);
$('#dvHtml').html(str);
});
函数escapeRegExp(str){
返回str.replace(/[\-\[\]\/\{\\}(\)\*\+\?\.\\\^\$\\\\\\\\\\;]/g,“\$&”);
}
功能突出显示(str,指针){
var parts=str.split(//gi);
对于(var i=0;i,这里有另一个解决方案
function escapeRegExp(str) {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
function highlight(str, needle){
var parts = str.split(/<[/]?span.*?>/gi);
for(var i=0; i<parts.length; i++){
if(i%2 == 0){
parts[i] = parts[i].replace(new RegExp("("+escapeRegExp(needle)+")", 'gi'), '<span class="red">$1</span>');
}else{
parts[i] = '<span class="red">'+ parts[i] +'</span>';
}
}
return parts.join('');
}
$(document).ready(function() {
var str = "Micromax Samsung S3 Microsoft Galaxy S";
var arr = ["Micro", "S"];
arr.forEach(function(item) {
str = highlight(str, item);
});
console.log(str);
$('#dvHtml').html(str);
});
函数escapeRegExp(str){
返回str.replace(/[\-\[\]\/\{\\}(\)\*\+\?\.\\\^\$\\\\\\\\\\;]/g,“\$&”);
}
功能突出显示(str,指针){
var parts=str.split(//gi);
对于(var i=0;我现在正在显示什么?谢谢您的评论,我已经用Output更新了我的问题,它现在显示什么?谢谢您的评论,我已经用输出来更新我的问题,以获得您的答复,但由于某些原因,我无法使用此库。您能帮我改进我的答案吗?谢谢您的回答,但我不能出于某种原因使用此库。你能帮我改进我的答案吗?真棒…非常好的解决方案谢谢你快速正确的回答。我的投票是+1@imdadhusen你是威康:-)你不能再对字符串应用相同的过程…这对询问者有效吗?@EdgarvillegaSalvara你的意思是什么?如果你做了str=t
,然后重新运行替换行,它会断开。它对询问者有效吗?也许这是一个很好的解决方案…非常感谢你快速而正确的回答。我的投票是+1@imdadhusen你很好ome:-)你不能再对字符串应用相同的过程…这对询问者有效吗?@EdgarvillegaSalvara你是什么意思?如果你这样做,然后重新运行替换行,它会断开。对询问者有效吗?可能很好…真的很感谢你的努力,这真的能帮助我摆脱字符或字符串形式的句子。我的vote+太好了…我真的很感谢你们的努力,它真的帮助我摆脱了字符或字符串形式的句子。我的投票+