如何使用大小写转换和路径名并去除最终附加到URL的guid?
这是我用过的东西:
*当GUID出现时,我想将其从URL剥离,并且仍使用切换大小写来定位URL-GUID。有什么方法可以做到这一点?
var pushState = history.pushState;
function test(path) {
switch (path) {
case '/url here':
//execute code
break;
case 'url here' +*GUID GETS ADDED HERE :
//execute code
break;
history.pushState = function() {
pushState.apply(history, arguments);
test(document.location.pathname);
};
答案 0 :(得分:1)
您需要使用regular expressions (regex)来测试是否存在GUID。
给定网址https://www.example.com/be96b17b-0552-4d3a-8020-783d4430dd15
,您就可以构建正则表达式
let guidRegex = /\w{8}\-\w{4}\-\w{4}\-\w{4}\-\w{12}/
\w
表示匹配字符a-z,A-Z,0-9和_
{x}
表示要完全匹配这么多字符,因此8个a-zA-Z0-9字符后跟一个连字符,再跟4个a-zA-Z0-9字符,依此类推。 GUID遵循8-4-4-4-12
要测试url中是否存在guid,您将使用regex.test
guidRegex.test(url)
,它将返回true或false。要提取GUID,您将像使用guidRegex.exec(url)
一样使用regex.exec,它将返回一个数组,其第一个元素是提取的字符串。
您可能必须评估在切换用例之外的GUID的存在,并使用该布尔值来确定要执行哪个代码块。
答案 1 :(得分:0)
尝试
switch (true) {
case 'http://example.com' == path:
console.log('url');
break;
case path.match("http://example.com/") && /[\w-]{36}/.test(path):
console.log('url with guid');
break;
}
var pushState = history.pushState;
function test(path) {
switch (true) {
case 'http://example.com' == path:
console.log('url');
break;
case path.match("http://example.com/") && /[\w-]{36}/.test(path):
console.log('url with guid');
break;
}
// ...
};
test('abc');
test('http://example.com');
test('http://example.com/ca6834e0-d401-46fd-9421-f72b719e99ca');