正则表达式,用于捕获ID中的4个连续数字

时间:2019-05-29 13:30:34

标签: regex string regex-group regex-greedy

我需要一个公式才能从某个索引处开始,然后获取接下来的4个连续数字。使用REGEX。并测试它们是否在0000-4999范围内。

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

这是我尝试过的一些代码。尽管我还很新,对正则表达式也不了解。

结果需要如下:

ID号:

9202204720082

获取以下4个数字:4720

从索引7开始(假定索引从1开始)

因此,如果要获取索引7、8、9和10的数字,则希望获取数字。 这样做是为了确定ID中的性别。

3 个答案:

答案 0 :(得分:1)

这可能会有所帮助:

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

您可以在regex101链接中查看它:Link to Regex

答案 1 :(得分:0)

您的原始表达式就可以了,在这里我们可以将其略微修改为:

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

我们正在(\d{4})组中捕获我们想要的数字。

DEMO

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

答案 2 :(得分:0)

您不需要为此使用正则表达式。您只需获取子字符串即可达到相同的结果。根据您的编程语言,您可能会执行以下操作:

JavaScript

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

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

Ruby

string = '9202204720082'
index = 6

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

Perl

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

substr($string, $index, 4);
#=> "4720"