与正则表达式连接

时间:2012-05-22 01:16:30

标签: javascript jquery regex text replace

我有一个抓取URL路径的JQuery函数,并将其添加为正文类:

var pathname = window.location.pathname;
var pathSlashesReplaced = pathname.replace(/\//g, " ");
var pathSlashesReplacedNoFirstDash = pathSlashesReplaced.replace(" ","");
var newClass = pathSlashesReplacedNoFirstDash.replace(/\(\d*\)/g, '').replace(/\s/, '-');

    $("body").addClass(newClass);
    if ( $("body").attr("class") == "") 
    {   

        $("body").addClass("class");

    }

..所以,如果url类似于/ myapp / user / list,则body类最终为:

<body class="myapp-user list">

问题是我希望所有三个单词都带有破折号,所以它应该是:

<body class="myapp-user-list">

..然后我可以使用CSS主题:

.myapp-user-list {

}

我很确定我的RegEx存在问题,但我无法弄清楚在哪里。我尝试了各种文本函数,但问题是它从页面中抓取了所有文本并将其作为正文类:

var text = $(this).text();
var newClass  = $.trim(text.replace(/\(\d*\)/g, '').toLowerCase()).replace(/\s/, '-');

3 个答案:

答案 0 :(得分:2)

尝试:

var newClass = location.pathname.split('/').join('-').replace(/(^-|-$)/g,''),
    $body = $("body").addClass(newClass);

if ($body.attr("class") == "") {   
    $body.addClass("class");
}

我会避免使用类名class。它可能会带来问题。

答案 1 :(得分:1)

尝试将g修饰符添加到第二个替换中以替换所有空格,而不仅仅是第一个。

var newClass = pathSlashesReplacedNoFirstDash.replace(/\(\d*\)/g, '').replace(/\s/g, '-');

答案 2 :(得分:0)

我认为应用这两个正则表达式可以完成这项工作。

"/\//-/g"   Will change all slashes to -
"/-//"      Will only remove the first -