正则表达式 - 匹配列表中的数字

Regular expression - match numbers in a list

本文关键字:数字 列表 正则表达式      更新时间:2023-09-26

我有一个带有数字的列表:

2 3 11 17 21 6
同时,我还有另一个带有分隔符的数字列表'-'

-4-7-11-15-9-6-
我需要在 javascript 中找到一个与第一次出现匹配的正则表达式(在本例中):
11

// returns index of first occurence of element in arr
// otherwise, returns -1
var getFirstOccurence = function (arr, str) {
    // split the str by dashes and map to an array of numbers
    var t = str.split("-").map(Number);
    for (var i = 0; i < arr.length; i++) {
        // arr[i] is in t, return its index
        if (t.indexOf(arr[i]) > -1) return i;
    }
    // otherwise, return -1 (not in list)
    return -1;
}
var str = "-4-7-11-15-9-6-",
    list = [2, 3, 11, 17, 21, 6];
alert(getFirstOccurence(list, str));
// alerts 2; arr[2] is 11, which is in the list

修改第二个列表以(4|7|11|15|9|6)并将其用作模式

演示

你可以

var string = '-4-7-11-15-9-6-',
    array = [2, 3, 11, 17, 21, 6];
var regex = new RegExp('-(' + array.join('|') + ')-');
var match = string.match(regex);
var value = match ? match[0] : undefined;
console.log()
/(?:^|-)11(?:-|$)/

此正则表达式将在前面、中间和结尾匹配 11 个