Как мне разобрать эту строку в javascript

#javascript #jquery

#javascript #jquery

Вопрос:

этот URL

 "?route=system/template/updateamp;template_id=22amp;token=200bfaa1f5d6cda4c782f98b15f32e7f"
  

и мне просто нужен токен из нее

  200bfaa1f5d6cda4c782f98b15f32e7f
  

каков наилучший способ проанализировать это out…it кажется, всегда последним

Комментарии:

1. Как вы можете видеть, многие ответы различаются по своему подходу, и некоторые могут не подходить, если URL-адрес даже немного отличается, это в основном потому, что ответы относятся к этому конкретному случаю и никаких других вариантов, поскольку они не знают о них, если это единственная возможная «форма», с которой вы могли столкнуться в URL, это нормально, но если у вас может быть amp;otherthing=123 в конце, некоторые могут не работать, возможно, разъяснение помогло бы.

2. ваше право, я заметил, что, возможно, есть другой get var в end…so я пошел с этим вводом.match(/token=(w )/)[1]

Ответ №1:

Это должно сделать это:

 var
  input = "?route=system/template/updateamp;template_id=22amp;token=200bfaa1f5d6cda4c782f98b15f32e7f",
  output = input.split("=").splice(-1)[0]; // output === "200bfaa1f5d6cda4c782f98b15f32e7f"
  

Или, если вы не уверены, что токен всегда является последним значением:

 var 
  input = "?route=system/template/updateamp;template_id=22amp;token=200bfaa1f5d6cda4c782f98b15f32e7famp;foo=baramp;baz=spam",
  output = input.substring(input.indexOf('token=')).split(/[=amp;]/)[1]; // output === "200bfaa1f5d6cda4c782f98b15f32e7f"
  

Комментарии:

1. работает отлично, особенно поскольку токен всегда является последним. В противном случае это не сработает.

Ответ №2:

Или используйте регулярное выражение. В этом случае это будет похоже

Форматировать

 var re = /token=(S )/i;
alert(url.match(re)[1]);
  

Комментарии:

1. или … оповещение (input.match(/token=(w )/)[1])

Ответ №3:

Вы можете просто заменить другую часть:

 s = "?route=system/template/updateamp;template_id=22amp;token=200bfaa1f5d6cda4c782f98b15f32e7f"

s.replace(/.*token=/, '')

#=> "200bfaa1f5d6cda4c782f98b15f32e7f"
  

Ответ №4:

 s = "?route=system/template/updateamp;template_id=22amp;token=200bfaa1f5d6cda4c782f98b15f32e7f";
s.match("[0-9a-z]*$");
  

Отображает "200bfaa1f5d6cda4c782f98b15f32e7f"