RegExp测试jQuery

时间:2013-05-07 16:10:45

标签: javascript jquery regex

我正在使用一些jQuery / JavaScript来检测页面的路径名,并为导航中的链接分配id。它实质上将链接文本从黑色更改为蓝色。无论如何,我已经借用了一些代码并且我没有足够先进来找出RegExp测试部分,但是当它通过主页作为路径/时,它会分配{{1导航中的所有链接(id传递正常)。有人可以帮我弄清楚为什么测试在路径名/index.html上无法正常工作?

/

2 个答案:

答案 0 :(得分:2)

这应该完成同样的任务:

var trailing_slash_re = /\/$/,
canon_url = location.pathname.replace(trailing_slash_re, '');

$('.nav ul li a').each(function() {
  var this_url = this.href.replace(trailing_slash_re, '');
  if (this_url.substr(-canon_url.length) == canon_url) {
    this.id = 'selected';
    return false; // don't process any others
  }
});

对于每个链接,它确定它是否以canon_url结尾。一旦找到匹配的锚,我就会跳出循环。这可以避免多个selected ID。

答案 1 :(得分:1)

解释你的情况

  • 设置时 urlRegExp = new RegExp(url.replace(/\/$/,'') + "$");您首先删除尾部斜杠。这是由您的正则表达式/\/$/完成的。

  • 当您传入/时,您将删除该斜杠,结果正则表达式为/$/。这将匹配任何东西,因为它所寻找的是$(在正则表达式中表示字符串的结尾)。解决方案可能涉及专门处理/ case(正如您所说,您已经完成并且上面的解决方案确实如此)。

如果你想搞乱正则表达式,我发现一个好的资源是http://gskinner.com/RegExr/