Извлечь указанный c номер длины из строки javascript - PullRequest
0 голосов
/ 24 марта 2020

Первый выстрел в javascript. Мне нужно извлечь идентификатор песни из полного URL. Я знаю, что идентификатор всегда состоит из 9 символов и всегда идет после текста track/, но я не знаю, как убрать все остальное.

Я пытался использовать this.value.replace(/[^0-9]/g, "");, чтобы удалить все не -numeri c символов, но все равно остается переменное число других чисел, в зависимости от ширины и высоты встраиваемой рамки и html цветового кода.

Существует ли простой встроенный способ получить только число 9-ди git из строки?

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

1 Ответ

1 голос
/ 24 марта 2020

Счастливчик! Вы используете Javascript, один из нескольких языков, движок регулярных выражений которых поддерживает положительные взгляды переменной длины. Вы можете использовать регулярное выражение

(?<=\btracks\/.*)(?<!\d)\d{9}(?!\d)

Демо .

Механизм регулярных выражений выполняет следующие операции:

(?<=          # begin a positive lookbehind
  \btracks\/  # match the string 'tracks/' not preceded by a word char
  .*          # match 0+ characters
)             # end positive lookbehind
(?<!\d)       # negative lookbehind to match a digit 
\d{9}         # match 9 digits
(?!\d)        # negative lookahead to match a digit

Альтернативно (и на языках которые не поддерживают положительные взгляды переменной длины), вы можете использовать

\btracks\/.*(?<!\d)(\d{9})(?!\d)

, и в этом случае желаемая строка из 9 цифр будет удерживаться группой захвата 1 (если есть совпадение).

...