Javascript 正则表达式的替换比我想要的多
我想从Javascript 正则表达式的替换比我想要的多,javascript,jquery,regex,Javascript,Jquery,Regex,我想从body元素中只删除一个以demo XXX开头的类,其中XXX可以是任何字符,并且没有固定长度 所以我的身体里可以有这样的东西 <body classs="bye demo-hello water"> 但是它也删除了demo XXX之后的所有类,例如water: <body classs="bye"> 使用此选项。将在检测\b之前消耗所有 使用此选项。将在检测\b之前消耗所有 使用此选项。将在检测\b之前消耗所有 使用此选项。将在检测前消耗所有\b您只需按照
body
元素中只删除一个以demo XXX
开头的类,其中XXX
可以是任何字符,并且没有固定长度
所以我的身体里可以有这样的东西
<body classs="bye demo-hello water">
但是它也删除了demo XXX
之后的所有类,例如water
:
<body classs="bye">
使用此选项。
将在检测\b
之前消耗所有
使用此选项。
将在检测\b
之前消耗所有
使用此选项。
将在检测\b
之前消耗所有
使用此选项。
将在检测前消耗所有\b
您只需按照@nhahtdh所说的方法执行即可
$('body').attr('class', function(_, cls){
return cls.split(/\s+/).filter(function(x){ // split
return x.indexOf("demo-") !== 0; // filter out unwanted values
}).join(" "); // join the array and return it
});
如果您想要正则表达式解决方案,您可以这样做
$('body').attr('class', function(_, cls){
return cls.replace(/\bdemo-\S+/g,"");
});
你可以像@nhahtdh所说的那样简单地这样做
$('body').attr('class', function(_, cls){
return cls.split(/\s+/).filter(function(x){ // split
return x.indexOf("demo-") !== 0; // filter out unwanted values
}).join(" "); // join the array and return it
});
如果您想要正则表达式解决方案,您可以这样做
$('body').attr('class', function(_, cls){
return cls.replace(/\bdemo-\S+/g,"");
});
你可以像@nhahtdh所说的那样简单地这样做
$('body').attr('class', function(_, cls){
return cls.split(/\s+/).filter(function(x){ // split
return x.indexOf("demo-") !== 0; // filter out unwanted values
}).join(" "); // join the array and return it
});
如果您想要正则表达式解决方案,您可以这样做
$('body').attr('class', function(_, cls){
return cls.replace(/\bdemo-\S+/g,"");
});
你可以像@nhahtdh所说的那样简单地这样做
$('body').attr('class', function(_, cls){
return cls.split(/\s+/).filter(function(x){ // split
return x.indexOf("demo-") !== 0; // filter out unwanted values
}).join(" "); // join the array and return it
});
如果您想要正则表达式解决方案,您可以这样做
$('body').attr('class', function(_, cls){
return cls.replace(/\bdemo-\S+/g,"");
});
您需要使用
^\s
排除空格,并查找一个或多个字符,因此请使用+
而不是*
$("body")[0].className =$("body")[0].className.replace(/\b\s?demo-[^\s]+\b/g,'');
您需要使用
^\s
排除空格,并查找一个或多个字符,因此使用+
而不是*
$("body")[0].className =$("body")[0].className.replace(/\b\s?demo-[^\s]+\b/g,'');
您需要使用
^\s
排除空格,并查找一个或多个字符,因此使用+
而不是*
$("body")[0].className =$("body")[0].className.replace(/\b\s?demo-[^\s]+\b/g,'');
您需要使用
^\s
排除空格,并查找一个或多个字符,因此使用+
而不是*
$("body")[0].className =$("body")[0].className.replace(/\b\s?demo-[^\s]+\b/g,'');
将类名字符串按空格拆分,然后循环删除任何您不想要的内容(通过对正则表达式进行测试),将剩下的内容连接起来并重新分配。您能展示您的删除函数吗?当您学习正则表达式时,您不知道默认情况下量词是贪婪的吗?@Barmar yep,但是我认为
\b
选项是分隔单词或类似的东西\b允许您执行“仅限整词”\b
匹配单词分隔符。它不一定是第一个。因此贪婪的量词将一直到最后一个单词分隔符。将类名字符串按空格分割,然后循环删除任何您不想要的内容(通过对正则表达式进行测试),将剩下的内容连接起来并重新分配。您能展示您的删除函数吗?当您学习正则表达式时,你不知道量词在默认情况下是贪婪的吗?@Barmar是的,但我认为\b
选项是分隔单词或类似的东西\b允许您执行“仅限整词”\b
匹配单词分隔符。它不一定是第一个。因此贪婪的量词将一直到最后一个单词分隔符。将类名字符串按空格分割,然后循环删除任何您不想要的内容(通过对正则表达式进行测试),将剩下的内容连接起来并重新分配。您能展示您的删除函数吗?当您学习正则表达式时,你不知道量词在默认情况下是贪婪的吗?@Barmar是的,但我认为\b
选项是分隔单词或类似的东西\b允许您执行“仅限整词”\b
匹配单词分隔符。它不一定是第一个。因此贪婪的量词将一直到最后一个单词分隔符。将类名字符串按空格分割,然后循环删除任何您不想要的内容(通过对正则表达式进行测试),将剩下的内容连接起来并重新分配。您能展示您的删除函数吗?当您学习正则表达式时,你不知道量词在默认情况下是贪婪的吗?@Barmar是的,但我认为\b
选项是分隔单词或类似的东西\b允许您执行“仅限整词”\b
匹配单词分隔符。它不一定是第一个。贪婪的量词将一直到最后一个单词分隔符。这比正则表达式更复杂。这比正则表达式更复杂。这比正则表达式更复杂。这比正则表达式更复杂。这比正则表达式更复杂。