javascript - 使用Javascript获取Web元素的名称

标签 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, ' ');

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

最佳答案

了解什么 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 中的 || 运算符将返回左操作数,否则将返回右操作数的值。在本例中,作者似乎正在使用此运算符作为条件。他首先尝试对 url 进行三次解密,然后使用正则表达式删除部分字符串。如果这样做会产生空字符串,则 || 运算符将返回正确运算符的值,然后(并且只有那时)直接跳转到正则表达式替换,而无需先取消编码。为什么?我不知道作者为什么要这样做,但这就是正在发生的事情。

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

关于javascript - 使用Javascript获取Web元素的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8598875/

相关文章:

javascript - FireFox 插件-sdk 页面工作人员正则表达式

javascript - jQuery 中的 PHP (WordPress)

regex - Notepad++ 用增量值查找/替换数字

regex - find -exec 上的多个 sed 操作

javascript - 如何在页面加载后立即调用 JavaScript 方法

javascript - 遍历 javascript promise 树

php - HTML5 表单提交等效 $.post

java - 如何制作正则表达式以查看字符串是否包含某个字母

javascript - 在 JavaScript 中使用正则表达式删除最后一个破折号后的单词

regex - Hadoop Hive SerDe Row Format for String Quoted Space delimited file