0

我未修改的 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">

我不必对正则表达式做太多事情,我一直在浏览文档,但我只是没有找到阻止 / 输出所需的内容。任何帮助是极大的赞赏!

谢谢!

4

2 回答 2

5

要回答实际问题:

为什么我的正则表达式输出中有 / ?

因为您在替换中有两个斜杠:/$& /.

替换应该是字符串,而不是正则表达式,并且/$& /.toString()(表达式的字符串表示形式)是"/$& /".

只需使用'$& '.


但我同意 Evan 的观点,你应该修复生成 HTML 的代码。

于 2012-05-25T03:10:46.493 回答
1
var c = $("body").attr("class").replace(/(bc-hide-\d)/,'$& ');

替换是一个字符串,而不是正则表达式。JS 将您传入的正则表达式转换为字符串,包括斜杠。

于 2012-05-25T03:10:51.283 回答