Найдите число, которое следует за определенной строкой, которая включает в себя как буквы, так и знаки препинания

1

Я пытаюсь найти способ извлечь числа, которые происходят после abc/ сразу после выполнения / и перед любыми другими буквами, цифрами или пунктуацией.

Например:

abc/134567/something должно вернуться 1234567

abc/1234567?foo=bar все равно должен возвращать только 1234567

blah/1234/abc/678 должен возвращать только 678, поскольку я ищу только число, которое преуспевает в abc/

Я знаю, что есть два варианта: регулярное выражение или подстрока.

Чтобы выполнить совпадение подстроки, мне нужна указательная точка, но я indexOf("abc/") том, что просто делаю indexOf("abc/") поскольку он возвращает индекс первой буквы - a, который может присутствовать в другом месте строки.

С регулярным выражением я изо всех сил старался найти, что поиск смеси букв и слэшей, по-видимому, приводит к возврату нулевого значения.

Так что лучший способ?

  • 2
    Вы должны прочитать немного о регулярных выражениях , это не сложно ( regex101.com/r/cplaPU/1 )
  • 0
    что вы ищете, подстрока как число или индекс начального шаблона?
Показать ещё 1 комментарий
Теги:
string
substring

4 ответа

1
Лучший ответ

Вы можете использовать это регулярное выражение:

var rgx = new RegExp("abc\/([0-9]+)","gi");

Затем:

var m = rgx.exec("abc/1234567?foo=bar");
console.log(m[0]);

отредактирован после комментариев

  • 0
    Это возвращает строку с abc/ prepending - мне нужно только число после
  • 0
    пожалуйста, смотрите отредактированный пост
0

Вы можете использовать регулярное выражение и искать для abc/ и следующих цифр.

var array = ['abc/134567/something', 'abc/1234567?foo=bar', 'blah/1234/abc/678'];

console.log(array.map(s => s.match(/abc\/(\d+)/)[1]));
0

Мы принимаем строку, которая имеет 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 запрещены. :-( Таким образом, мы должны использовать это, немного сложнее.

0

Вы после чего-то вроде этого:

^(.*\/)(\d+)(.*)

Где вторая группа даст вам цифры после косой черты.

Посмотрите на регулярное выражение здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню