Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式的替换比我想要的多_Javascript_Jquery_Regex - Fatal编程技术网

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
匹配单词分隔符。它不一定是第一个。贪婪的量词将一直到最后一个单词分隔符。这比正则表达式更复杂。这比正则表达式更复杂。这比正则表达式更复杂。这比正则表达式更复杂。这比正则表达式更复杂。