【问题标题】:Using a regex to determine domain using JavaScript使用正则表达式来确定使用 JavaScript 的域
【发布时间】:2009-05-08 19:21:04
【问题描述】:

如果在工作中,我们有测试、登台和生产环境,例如:

http://test.my-happy-work.com

http://staging.my-happy-work.com

http://www.my-happy-work.com

我正在编写一些 javascript,它将浏览器重定向到一个 url,例如:

http://[environment].my-happy-work.com/my-happy-video

我需要能够确定我们所处的当前环境。

我目前可能会访问以下网址:

http://[environment].my-happy-work.com/my-happy-path/my-happy-resource

我希望能够抓取 window.location 但将其剥离,但:

http://[environment].my-happy-work.com

然后追加到那个字符串 + "/" + "my-happy-video"。

我不熟悉正则表达式,但我想有办法将 window.location 解析为“.com”

想法?谢谢!

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    你为什么不直接使用window.location.hostname?那只包含域。

    您可以将其与window.location.protocol 结合起来生成您需要的内容:

    var domain = window.location.protocol + "//" + window.location.hostname;
    

    More on window.location.

    【讨论】:

    • 是的,然后在 window.location.hostname 上使用一些正则表达式来确定您的子域(或您所称的环境),正则表达式类似于 window.location.hostname.match(/^ (.*)\.my-happy-work\.com$/) 它将返回一个包含捕获字段的数组(括号中的内容)。
    【解决方案2】:

    这个表达式应该可以解决问题:

    ^https?://([a-z0-9]+)\.([a-z0-9\-]+)\.[a-z]+
    

    【讨论】:

      【解决方案3】:

      另一种选择可能是在每个环境中部署单独的代码。不是完全独立的代码,但可能在生产时将变量设置为“PRODUCTION”,或者在暂存模式下将变量设置为“STAGING”。

      这将您的应用程序应运行的模式与域名解耦。

      【讨论】:

      • 这是明智的。甚至不需要更改代码 - 只需在存储模式的每台机器上创建一个 ini/config 文件(如果未找到文件,则使用安全后备)。
      • (这是假设您有一个服务器端脚本来读取这样的文件,并在必要时生成适当的 JS 变量。)
      【解决方案4】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 2020-12-14
      • 2017-12-22
      • 2011-06-03
      相关资源
      最近更新 更多