为什么我在正则表达式中输入/?

时间:2012-05-25 03:04:27

标签: javascript jquery regex

我未触及的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">

我没有必要对正则表达式做太多而且我一直在浏览文档,但我只是没有找到我需要阻止/输出。非常感谢任何帮助!

谢谢!

2 个答案:

答案 0 :(得分:5)

回答实际问题:

  

为什么我在正则表达式输出中得到/?

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

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

只需使用'$& '


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

答案 1 :(得分:1)

var c = $("body").attr("class").replace(/(bc-hide-\d)/,'$& ');

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