Я пытаюсь найти способ извлечь числа, которые происходят после abc/
сразу после выполнения /
и перед любыми другими буквами, цифрами или пунктуацией.
Например:
abc/134567/something
должно вернуться 1234567
abc/1234567?foo=bar
все равно должен возвращать только 1234567
blah/1234/abc/678
должен возвращать только 678, поскольку я ищу только число, которое преуспевает в abc/
Я знаю, что есть два варианта: регулярное выражение или подстрока.
Чтобы выполнить совпадение подстроки, мне нужна указательная точка, но я indexOf("abc/")
том, что просто делаю indexOf("abc/")
поскольку он возвращает индекс первой буквы - a, который может присутствовать в другом месте строки.
С регулярным выражением я изо всех сил старался найти, что поиск смеси букв и слэшей, по-видимому, приводит к возврату нулевого значения.
Так что лучший способ?
Вы можете использовать это регулярное выражение:
var rgx = new RegExp("abc\/([0-9]+)","gi");
Затем:
var m = rgx.exec("abc/1234567?foo=bar");
console.log(m[0]);
отредактирован после комментариев
abc/
prepending - мне нужно только число после
Вы можете использовать регулярное выражение и искать для abc/
и следующих цифр.
var array = ['abc/134567/something', 'abc/1234567?foo=bar', 'blah/1234/abc/678'];
console.log(array.map(s => s.match(/abc\/(\d+)/)[1]));
Мы принимаем строку, которая имеет abc/
, после нее целое число, которое берется как согласованная группа и либо конец строки, либо некоторый символ без цифр после него.
abc\/(\d+)(?:$|\D)
Вы будете использовать в Javascript для извлечения группы:
var myRegexp = /abc\/(\d+)(?:$|\D)/g;
var match = myRegexp.exec(inputString);
var result=match[1]; // the number after abc/
В другом двигателе регулярных выражений, чем в JavaScript, можно использовать lookahead и lookbehind. Но в JS lookbehinds запрещены. :-( Таким образом, мы должны использовать это, немного сложнее.
Вы после чего-то вроде этого:
^(.*\/)(\d+)(.*)
Где вторая группа даст вам цифры после косой черты.