Во-первых, это не требует JQuery; это простой Javascript. Я исправлю ваши теги после того, как отвечу, чтобы отразить это.
Регулярное выражение на самом деле было бы довольно простым способом достичь этого, и я не думаю, что такой простой, как этот, будет так трудно понять, как вы думаете.
Так что я все равно отвечу опцией regex, а затем перейду к другим опциям:
var url = "http://www.domain.com:11000/invite/abcde16989/root/index.html";
//first method:
var id = url.match('^http://www.domain.com:11000/invite/(.+)/root/index.html$')[1];/index.html$/)[1];
//second method: (if you don't know exact format of the rest of the URL but you do know the format of the ID string)
var id = url.match('/([a-z]{5}[0-9]{5})/')[1];
Первый метод получит строку в позиции, указанной вами в URL. Это не будет проверять форматирование; он просто смотрит на оставшуюся часть URL-адреса и берет часть, которую вы запрашиваете. Это должно быть действительно легко понять: это в основном только ваш URL, но с (. +), Куда идет ваш ID.
Второй метод специально ищет строку в том формате, который вы просили - то есть пять букв, а затем пять цифр. По общему признанию, это немного сложнее для чтения, но оно должно быть достаточно понятным, если вы посмотрите на него с учетом этих критериев.
В обоих случаях регулярное выражение само возвращает массив результатов, причем нулевым элементом массива является вся строка (т. Е. В первом случае, включая оставшуюся часть URL). Это где (скобки) входят (то есть, где мы сказали (.+)
). Это говорит функции соответствия помещать содержимое скобок в другой элемент массива, чтобы мы могли его использовать. В обоих случаях это означает, что мы можем прочитать идентификатор в элементе массива [1]
.
Хорошо, а как насчет опций без регулярных выражений:
На самом деле, будет довольно сложно сделать это простым способом без регулярных выражений в Javascript, поскольку даже простая функция разбиения строк использует разделение регулярных выражений для выполнения разбиения (при условии, что это будет очень простой, это все еще регулярное выражение). Несколько других людей уже дали вам ответы, используя это, но это является все еще регулярным выражением, поэтому технически они также не ответили точно на ваш вопрос.
Я собираюсь догадаться, что на самом деле один из этих ответов будет достаточно хорош для вас (мой или, скорее, один из ответов, использующих split()
), несмотря на то, что все еще присутствует элемент регулярного выражения. Однако, если вы действительно не хотите иметь ничего общего с регулярным выражением, вам придется начать выполнять немного более сложные манипуляции со строками, возможно, используя substring()
(хотя есть и другие способы сделать это ).
Что-то вроде этого:
var prefixstring="http://www.domain.com:11000/invite/";
var prefixlen=prefixstring.length;
var idlen=10;
var id = url.substring(prefixlen,idlen+prefixlen);
Получает длину части URL-адреса перед идентификатором, а затем использует substring (), чтобы выделить необходимый бит. Но я уверен, что вы согласитесь, что параметры регулярных выражений проще? ; -)
Надеюсь, это поможет. (и я надеюсь, что это поможет вам меньше бояться регулярных выражений!)