使用Javascript获取Web元素的名称

时间:2011-12-22 02:40:01

标签: javascript regex

var name = unescape(decodeURIComponent(
    unescape(unescape(unescape(url)))
    .replace(/\s/g, '+')
    .replace(/^.*\/|\?.*$|\#.*$|\&.*$/g,'') || 
    url.replace(/.*\/\/|www./g,'')
    .replace(/[^\w]+/g,'_')
    .replace(/^_*|_*$/g,''))
).replace(/\+/g, ' ');

上面的代码是获取网页元素的名称,但我不明白它是如何工作的,所以有人可以为我解释一下它的细节吗?

1 个答案:

答案 0 :(得分:2)

了解Regular Expressions是什么。

如果您不知道Regular Expressions是什么,那么这是您需要学习的第一件事,因为基本上所有这些代码都在使用正则表达式。例如,代码.replace(/\s/g, '+')将使用+符号替换字符串中的所有空白字符。据推测,这是因为当您使用Google搜索时,Google会一直为您做到这一点。

.replace(/^.*\/|\?.*$|\#.*$|\&.*$/g,'')将删除uri中第一个/之前的所有内容,并且还会删除所有查询。例如,google.com/some/page.html?var=value将变为some/page.html

decodeURIComponent是一个javascript函数,它将使用Percent-Encoding编码的字符串并将其转换为普通字符串。

如果左操作数为true,则javascript中的||运算符将返回左操作数,否则将返回右操作数的值。在这种情况下,看起来作者使用此运算符作为条件。他首先尝试取消编码网址三次,然后用正则表达式删除部分字符串。如果这样做会产生一个空字符串,那么||运算符将返回右运算符的值,然后(然后才会)直接跳转到正则表达式替换而不首先取消编码。为什么?我不知道为什么作者会这样做,但这就是发生的事情。

还有其他一些细节,但这就是要点。基本上,如果你真的想知道发生了什么,你应该学习正则表达式。