尝试将 .split 与两个不同的页面 URL 结构一起使用
Trying to use .split with two different page URL structures
我的意图
从我的两种 URL 字符串
中提取语言代码
我的问题
如何在两个不同的 URL 结构之间进行拆分?我有两个 URL 结构,在下面的代码下作为示例列出。
我的问题
我无法弄清楚我应该如何将两个不同的变量单独或一起拆分为一行 cc =... 使用自定义 javascript 和 Google Tag Manager
代码
function() {
cc = {{Page Path}}.split("/")[1].toLowerCase();
cc = {{virtualURL}}.split("/#/")[1].toLowerCase();
if(cc.length == 2) {
cc = cc;
} else {
cc = 'other';
}
return cc;
}
{{Page Path}}
示例 - https://www.example.com/en/.....
{{virtualURL}}
的示例 - https://www.booking.example.com/#/en/........
备注
在这两个示例中,我都希望能够成功拉出 en。
这里的任何解决方案都可能是脆弱的,您可以 https://example.com/xy/
其中 xy
不是语言代码。
但考虑到这一点,并且只允许两个字符的语言代码:
var rexGetLang = /\/([a-z]{2})\//;
function getLang(url) {
var match = rexGetLang.exec(url);
return match ? match[1] : "other";
}
console.log(getLang("https://www.example.com/en/....."));
console.log(getLang("https://www.booking.example.com/#/en/........"));
或者如果您想允许 en-GB
等:
var rexGetLang = /\/([a-z]{2}(?:-[A-Z]{2})?)\//;
function getLang(url) {
var match = rexGetLang.exec(url);
return match ? match[1] : "other";
}
console.log(getLang("https://www.example.com/en/....."));
console.log(getLang("https://www.booking.example.com/#/en/........"));
console.log(getLang("https://www.booking.example.com/........"));
console.log(getLang("https://www.example.com/en-GB/....."));
console.log(getLang("https://www.booking.example.com/#/en-US/........"));
// Web API for handling URL https://developer.mozilla.org/en-US/docs/Web/API/URL
const url = new URL('https://www.example.com/en/website');
url.hostname; // 'example.com'
url.port; // ''
url.search; // ''
url.pathname; // '/en/website'
url.protocol; // 'https:'
// RegEx to see if /en/ exists https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
new RegExp(/\/en\//).test(url.pathname) // true
我们只需将URL除以/
即可取出语言代码。让我们看看将示例中给出的两个 URL 拆分后会得到什么:
- https://www.example.com/en/ - ["https:", "", "www.example.com", "en", ""]
- https://www.booking.example.com/#/en/ - ["https:", "", "www.booking.example.com", "#", "en", ""]
在上面的示例中,我们可以看到语言代码出现在第 3 个索引(第一个示例)或第 4 个索引(第 2 个示例),这可以通过 if
条件来处理。让我们看看如何:
let url = 'https://www.booking.example.com/#/en/';
let urlTokens = url.split('/');
let languageCode = urlTokens[3] === '#' ? urlTokens[4] : urlTokens[3];
console.log(languageCode);
function getLanguage(url) {
var rgx = /^https:\/\/[^\/]+\/(?:#\/)?([a-z]+)/;
var language = url.match(rgx)[1];
return language;
}
var url = 'https://www.booking.example.com/#/en/';
var language = getLanguage(url);
我的意图
从我的两种 URL 字符串
我的问题
如何在两个不同的 URL 结构之间进行拆分?我有两个 URL 结构,在下面的代码下作为示例列出。
我的问题
我无法弄清楚我应该如何将两个不同的变量单独或一起拆分为一行 cc =... 使用自定义 javascript 和 Google Tag Manager
代码
function() {
cc = {{Page Path}}.split("/")[1].toLowerCase();
cc = {{virtualURL}}.split("/#/")[1].toLowerCase();
if(cc.length == 2) {
cc = cc;
} else {
cc = 'other';
}
return cc;
}
{{Page Path}}
示例 - https://www.example.com/en/.....
{{virtualURL}}
的示例 - https://www.booking.example.com/#/en/........
备注
在这两个示例中,我都希望能够成功拉出 en。
这里的任何解决方案都可能是脆弱的,您可以 https://example.com/xy/
其中 xy
不是语言代码。
但考虑到这一点,并且只允许两个字符的语言代码:
var rexGetLang = /\/([a-z]{2})\//;
function getLang(url) {
var match = rexGetLang.exec(url);
return match ? match[1] : "other";
}
console.log(getLang("https://www.example.com/en/....."));
console.log(getLang("https://www.booking.example.com/#/en/........"));
或者如果您想允许 en-GB
等:
var rexGetLang = /\/([a-z]{2}(?:-[A-Z]{2})?)\//;
function getLang(url) {
var match = rexGetLang.exec(url);
return match ? match[1] : "other";
}
console.log(getLang("https://www.example.com/en/....."));
console.log(getLang("https://www.booking.example.com/#/en/........"));
console.log(getLang("https://www.booking.example.com/........"));
console.log(getLang("https://www.example.com/en-GB/....."));
console.log(getLang("https://www.booking.example.com/#/en-US/........"));
// Web API for handling URL https://developer.mozilla.org/en-US/docs/Web/API/URL
const url = new URL('https://www.example.com/en/website');
url.hostname; // 'example.com'
url.port; // ''
url.search; // ''
url.pathname; // '/en/website'
url.protocol; // 'https:'
// RegEx to see if /en/ exists https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
new RegExp(/\/en\//).test(url.pathname) // true
我们只需将URL除以/
即可取出语言代码。让我们看看将示例中给出的两个 URL 拆分后会得到什么:
- https://www.example.com/en/ - ["https:", "", "www.example.com", "en", ""]
- https://www.booking.example.com/#/en/ - ["https:", "", "www.booking.example.com", "#", "en", ""]
在上面的示例中,我们可以看到语言代码出现在第 3 个索引(第一个示例)或第 4 个索引(第 2 个示例),这可以通过 if
条件来处理。让我们看看如何:
let url = 'https://www.booking.example.com/#/en/';
let urlTokens = url.split('/');
let languageCode = urlTokens[3] === '#' ? urlTokens[4] : urlTokens[3];
console.log(languageCode);
function getLanguage(url) {
var rgx = /^https:\/\/[^\/]+\/(?:#\/)?([a-z]+)/;
var language = url.match(rgx)[1];
return language;
}
var url = 'https://www.booking.example.com/#/en/';
var language = getLanguage(url);