JavaScript

时间:2017-04-11 11:34:12

标签: javascript html regex

我需要一些关于JavaScript中字符串构建和连接的帮助。

我在网站上有一个表单,用户输入一个VIP名称,然后将其添加到我的URL末尾以构建动态仪表板。

我的代码:

$(window).on('load', function() {   
$('#open').click(function() {
    var fixedData1 = 'http://testwebsite/dashboard/db/omni-vip?var-vip=',   
        userEntry1 = $('#one').val();
    var newWindow = window.open(fixedData1 + userEntry1);
    newWindow.focus();
});
});

实施例。用户输入.... app-123.network.dcs1.domain.com

然后打开一个包含URL的新页面:

http://testwebsite/dashboard/db/omni-vip?var-vip=app-123.network.dc.domain.com

这很棒并且工作正常,但是我想制作“DC'如果是变量,我有两个DC的DCS1 / dcS2,用户可以像上面那样输入,并在名称中指定dc。这仅打开具有该特定直流的仪表板。

我希望能够将dc作为变量传递给VIP名称,所以

vip = app-123.network。$ dc.domain.com

即使用户输入了具有特定名称的dc。

如果这可能吗?我不知道从哪里开始。

Thaks

2 个答案:

答案 0 :(得分:1)

您的问题并不十分明确,但如果我理解正确,您希望接受以下条目:

XXX.dcS1.YYY
XXX.dcS2.YYY

但将以下内容传递给您的服务:

XXX.$dc.YYY

您可以使用正则表达式进行替换:

$(window).on('load', function() {   
    $('#open').click(function() {
        var regex = /\.(dcS[12])\./;
        var fixedData1 = 'http://testwebsite/dashboard/db/omni-vip?var-vip=',   
            userEntry1 = $('#one').val(),
            replaced = userEntry1.replace(regex, '.$dc.');

        var newWindow = window.open(fixedData1 + replaced);
        newWindow.focus();
    });
});

对于上述情况,如果用户输入app-123.network.dcS1.domain.com,则会将其发送至http://testwebsite/dashboard/db/omni-vip?var-vip=app-123.network.$dc.domain.com

在这里测试正则表达式:

https://regex101.com/r/mCcR0D/2

如果我没有正确理解,请告诉我。

答案 1 :(得分:0)

ES2015的后退标记可以让您在字符串中使用${}变量:

$('#open').click(function() {
  let s = $('#one').val().toUpperCase().trim(); // s1 >>> S1
  let url = `http://testwebsite/dashboard/db/omni-vip?var-vip=app-123.network.dc${s}.domain.com`;
  let newWindow = window.open(url);
  newWindow.focus();
});