【问题标题】:JS split OR Logical OperatorJS拆分OR逻辑运算符
【发布时间】:2014-08-08 11:47:54
【问题描述】:

用户输入了一个我只想从中获取尾部的网址,因为我知道他输入的是哪个网站。

所以首先我想删除“主要”网址并获取最后的内容,所以我的操作是:

原文链接:http://example.com/something

var n=e.split("http://example.com/");e=n[1];

我会得到“东西”

问题是站点也可以被保护,因此 https 不是 http。因此拆分不会起作用。

如何定义一个拆分函数,它的工作原理如下:

split("http://example.com/ || https://example.com/")

我不想通过查看“//”或类似的东西来拆分,我想要一个确切的地址。

【问题讨论】:

  • 正则表达式是你的朋友 ;)
  • 你想怎么拆分?
  • 我需要从变量中删除我写的内容:“example.com || example.com
  • 我无法理解你((你能说一下你的输入和你想输出的内容吗?
  • split(/https?:\/\/example\.com\//) - 这是你的想法吗?您的目标不是 100% 明确。

标签: javascript split logical-operators


【解决方案1】:

如果你喜欢它清楚并且想避免使用正则表达式,试试这个:

var n=e.split("http://example.com/",2).pop().split("https://example.com/",2).pop();

【讨论】:

  • 它确实有效,但是,我不能用 e=n[1]; 得到整个字符串。和以前一样。
  • 你不需要n[1]split()pop()组合的结果是一个存储在n中的字符串。如果你想让e成为这个字符串,只需添加e = n即可。
【解决方案2】:

如果您想知道 主机,您可以通过在 JavaScript 中使用以下代码来实现:

window.location.host

来源Get The Current Domain Name With Javascript (Not the path, etc.)

您还可以使用 window.location.path 来获取请求的 URL,结合您获得的 URL:

window.location.host + window.location.pathname

对我来说,这会在编写此回复时输出 stackoverflow.com/posts/25203020/edit。

【讨论】:

  • 不是当前网址,而是用户在字段中输入的网址。
  • 您应该非常小心地接受来自用户的输入:维基百科有这个示例 URI:foo://username:password@example.com:8042/over/there/ index.dtb?type=animal&name=narwhal#nose 虽然是您可以点击的有效“网址”,但它非常复杂,您不能轻易预料到。
  • 但我确实知道 URL 的开头,它可以是那个或那个。
【解决方案3】:
var s = "http://example.com/something";
function split (url) {
  var r = /([^:]+):\/\/([^\/]+)\/(.*)/gi;
  var a = r.exec(url)
  return [a[1], a[2], a[3]];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    相关资源
    最近更新 更多