Jquery PathName正则表达式更改背景

时间:2012-10-03 17:02:39

标签: jquery regex path

我刚开始学习jquery,我想知道我是否正确行事。 这是我的代码

 var images = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg','6.jpg', '7.jpg', '8.jpg', '9.jpg'];
if (window.location == 'http://localhost:81/ci/login') {
    $('body').css('background-image', 'url("public/images/login_4.jpg")');
} else if(window.location == 'http://localhost:81/ci/index.php/login') {
    $('body').css('background-image', 'url("../public/images/login_4.jpg")');
}else {
    $('body').css({'background-image': 'url(public/images/' + images[Math.floor(Math.random() * images.length)] + ')'});
}

第一个块的作用是检查位置是否与给定的字符串相同 问题是,如果网址看起来像这样 http://localhost:81/ci/login?http://localhost:81/ci/login#

代码失败了...我知道有一个正则表达式的解决方案。你怎么看待费拉斯?

2 个答案:

答案 0 :(得分:2)

您不需要任何正则表达式,只需使用indexOf()

即可
if(window.location.href.indexOf('http://localhost:81/ci/login') != -1)
{....}
else if(window.location.href.indexOf('http://localhost:81/ci/index.php/login' != -1)
{....}

或者更好的是,将它们组合到一起以获得更便携的代码:

if(window.location.href.indexOf('login') != -1)

答案 1 :(得分:1)

RegEx效率低下,对于像这样的简单情况应该避免使用。

请改为尝试:

if (window.location.href.indexOf('http://localhost:81/ci/login') == 0) {
     ...
} ...

如果你坚持使用正则表达式(当然是一个方便的工具开始学习),你可以这样做:

if (/^http:\/\/localhost:81\/ci\/login/.test(window.location.href)) {
     ...
} ...

插入符号^符号表示匹配字符串的开头 - 如果不是这样,即使模式出现在字符串的中间,此测试也是如此。由于斜杠标记正则表达式的开始和结束,因此必须转义模式中的所有斜杠。