Регулярное выражение для извлечения alphanumeri c частей URL? - PullRequest
3 голосов
/ 22 января 2020

При наличии любого URL-адреса, например:

https://stackoverflow.com/v1/summary/1243PQ/details/P1/9981

Как извлечь часть URL-адреса цифру c или alphanumeri c? Т.е. следующие строки из приведенного выше URL-адреса:

1. v1
2. 1243PQ
3. P1
4. 9981

Чтобы перефразировать, регулярное выражение для извлечения строк из строки (URL), которые имеют по крайней мере 1 di git и 0 или более символов алфавита, разделенных на '/'.

Я пытался захватить повторяющуюся группу (^[a-zA-Z0-9]+)+ и ([a-zA-Z]{0,100}[0-9]{1,100})+, но это не сработало. Оглядываясь назад, интуиция говорит, что это не должно работать. Я не уверен, как сопоставить шаблоны по группе, а не по одному персонажу.

Ответы [ 4 ]

2 голосов
/ 22 января 2020

Если я понимаю, что вы действительно хотите:

Извлечение деталей только с номерами или с номерами, следующими за алфавитами

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

\b[a-zA-Z]*[0-9]+[a-zA-z]*\b

Regex Demo

Я использую \b для подтверждения положения границы слова или части.
Как числа необходимы, и алфавиты могут приходить до или после этого я использую выше регулярное выражение.

Если следующие алфавиты не требуются, то я могу предложить это регулярное выражение:

\b[a-zA-z0-9]*[0-9]+[a-zA-Z0-9]*\b

Regex Demo

1 голос
/ 22 января 2020

Ну, вы можете сделать это:

(\w*\d+\w*) with the g (global) regex option

На примере URL это будет выглядеть так:

const regex = /(\w*\d+\w*)/g;
const url = 'https://stackoverflow.com/v1/summary/1243PQ/details/P1/9981';

console.log(url.match(regex))
1 голос
/ 22 января 2020

Попробуйте \/[a-zA-Z]*\d+[a-zA-Z0-9]*

Объяснение:

\/ - соответствует / буквально

[a-zA-Z]* - 0+ букв

\d+ - 1+ цифр - благодаря этому нам требуется хотя бы одна цифра

[a-zA-Z0-9]* - 0+ букв или цифр

Демо

Он будет записан вместе с / в начале, поэтому вам нужно его обрезать.

1 голос
/ 22 января 2020

Я считаю, что это должно работать для вас:

(\d*\w+\d+\w*)

РЕДАКТИРОВАТЬ : на самом деле, этого должно быть достаточно

(\w+\d+\w*)

или

(\w*\d+\w*)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...