Ответ 1
Не писать регулярное выражение! Это тривиально делать со строковыми функциями:
var final = id.substr(id.lastIndexOf('/') + 1);
Еще проще, если вы знаете, что конечная часть всегда будет 16 символов:
var final = id.substr(-16);
Я работаю с API Google, который возвращает идентификаторы в следующем формате, который я сохранил в виде строки. Как я могу написать регулярное выражение в javascript, чтобы обрезать строку только символам после последней косой черты в URL.
var id = 'http://www.google.com/m8/feeds/contacts/myemail%40gmail.com/base/nabb80191e23b7d9'
Не писать регулярное выражение! Это тривиально делать со строковыми функциями:
var final = id.substr(id.lastIndexOf('/') + 1);
Еще проще, если вы знаете, что конечная часть всегда будет 16 символов:
var final = id.substr(-16);
Несколько иной подход с регулярным выражением:
var afterSlashChars = id.match(/\/([^\/]+)\/?$/)[1];
Нарушение этого регулярного выражения:
\/ match a slash
( start of a captured group within the match
[^\/] match a non-slash character
+ match one of more of the non-slash characters
) end of the captured group
\/? allow one optional / at the end of the string
$ match to the end of the string
Затем [1]
извлекает первую захваченную группу в пределах соответствия
Рабочий фрагмент:
var id = 'http://www.google.com/m8/feeds/contacts/myemail%40gmail.com/base/nabb80191e23b7d9';
var afterSlashChars = id.match(/\/([^\/]+)\/?$/)[1];
// display result
document.write(afterSlashChars);
На всякий случай кто-то встречает этот поток и ищет простое решение JS:
id.split( '/'). Поп (-1)
Это должно работать:
last = id.match(/\/([^/]*)$/)[1];
//=> nabb80191e23b7d9
это легко понять (?!.*/).+
позвольте мне объяснить:
во-первых, давайте сопоставить все, что имеет косую черту в конце, хорошо? , что часть, которую мы не хотим
.*/
соответствует всем, пока последняя косая черта
тогда мы создаем "Отрицательный взгляд" (?!)
, чтобы сказать: "Я не хочу этого, отбрось"
(?!.*)
это "Отрицательный взгляд"
Теперь мы можем с радостью принять все рядом с тем, что мы не хотим, с этим
.+
ВАМ МОЖЕТ БЫТЬ ВЫБИРАТЬ/ТАК, КОТОРАЯ СТАНОВИТСЯ:
(?!.*\/).+
this regexp: [^\/]+$
- работает как чемпион:
var id = ".../base/nabb80191e23b7d9"
result = id.match(/[^\/]+$/)[0];
// results -> "nabb80191e23b7d9"
Не знаю JS, используя другие примеры (и догадываться) -
id = id.match(/[^\/]*$/);
//[0] необязательно?
Почему бы не использовать заменить?
"http://google.com/aaa".replace(/(.*\/)*/,"")
дает "ааа"