我未触及的HTML看起来像这样:
<body class="home bc-hide-1bc-hide-2">
我的JS看起来像这样:
var c = $("body").attr("class").replace(/(bc-hide-\d)/,/$& /);
$("body").attr("class", c);
目标是让我的HTML看起来像这样(注意bc-hide-1和bc-hide-2之间的空格):
<body class="home bc-hide-1 bc-hide-2">
使用上面的JS,我的输出实际上以每个bc-hide-(见下文)实例的前面结尾:
<body class="home /bc-hide-1 /bc-hide-2">
我没有必要对正则表达式做太多而且我一直在浏览文档,但我只是没有找到我需要阻止/输出。非常感谢任何帮助!
谢谢!
答案 0 :(得分:5)
回答实际问题:
为什么我在正则表达式输出中得到/?
因为替换中有两个斜杠:/$& /
。
替换应该是字符串,而不是正则表达式,/$& /.toString()
(表达式的字符串表示)是"/$& /"
。
只需使用'$& '
。
但我同意Evan,你应该修改生成HTML的代码。
答案 1 :(得分:1)
var c = $("body").attr("class").replace(/(bc-hide-\d)/,'$& ');
替换是字符串,而不是正则表达式。 JS将您传入的正则表达式转换为字符串,包括斜杠。