如何剥离guid的URL并用完直到guid以防Javascript / jquery中的大小写切换?

时间:2019-05-14 02:13:48

标签: javascript switch-statement case guid strip

如何使用大小写转换和路径名并去除最终附加到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);
};

2 个答案:

答案 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');