Regex для захвата 4 последовательных чисел в ID - PullRequest
0 голосов
/ 29 мая 2019

Мне нужна формула, чтобы начать с определенного индекса, а затем получить следующие 4 последовательных числа. Использование REGEX. И проверка, находятся ли они в диапазоне 0000-4999.

^.{6}\d{4}$[0000-4999]

Это некоторый код, который я пробовал. Хотя я все еще новичок и не понимаю регулярных выражений.

Результат должен быть следующим:

Идентификационный номер:

9202204720082

Получить следующие 4 цифры: 4720

Начиная с индекса 7 (предполагается, что индексы начинаются с 1)

Так что хотите получить числа, если индексы 7,8,9 и 10. Это делается для определения пола в удостоверении личности.

Ответы [ 3 ]

1 голос
/ 29 мая 2019

Может быть, это может помочь:

(?<=\d{6})\d{4}(?<=\d{3})

Вы можете проверить это по ссылке regex101: Ссылка на Regex

0 голосов
/ 30 мая 2019

Вам не нужно использовать регулярное выражение для этого. Вы можете достичь того же результата, просто получив подстроку. В зависимости от вашего языка программирования вы можете сделать что-то вроде этого:

JavaScript

var string = "9202204720082";
var index = 6;

console.log(string.substring(index, index + 4));

рубин

string = '9202204720082'
index = 6

string[index, 4]
#=> "4720"

Perl

my $string = '9202204720082';
my $index = 6;

substr($string, $index, 4);
#=> "4720"
0 голосов
/ 29 мая 2019

Ваше оригинальное выражение просто отлично, здесь мы можем немного изменить его на:

^.{6}(\d{4}).+$

, которое мы собираем желаемыми цифрами в этой группе (\d{4}).

ДЕМО

const regex = /^.{6}(\d{4}).+$/gm;
const str = `9202204720082`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

Схема RegEx

jex.im визуализирует регулярные выражения:

enter image description here

...