javascript中的多个正则表达式匹配

时间:2013-03-14 13:54:32

标签: javascript regex

document.querySelectorAll("table[id^='Table']");

此代码选择ID为Table的所有表。但我想选择id为Table2 OR Table7(或任何其他数字)的表格。如何用正则表达式做到这一点?

编辑:jQuery在我的情况下不适用。

1 个答案:

答案 0 :(得分:2)

function getTables(tableNumbers) { // Usage: getTables([2, 7]) will return the tables with the ID 'Table2' and 'Table7'. (You can add more numbers; [2,7,3,6])
    var allTables = document.querySelectorAll("table[id^='Table']");
    var tablesWeWant = [];
    for (var i = 0; i < allTables.length; i++) {
        if (allTables[i].id.match(/Table[0-9]/)) {
            tablesWeWant.push(allTables[i]);
        }
    }
    for (var i = 0; i < tablesWeWant.length; i++) {
        if (!tableNumbers.contains(tablesWeWant[i].id.substr(id.length - 1))) {
            tableNumbers.splice(i, 1);
        }
    }
    return tablesWeWant;
}

这应返回所有表格,其ID与正则表达式/Table[0-9]/匹配,并以变量tableNumbders中包含的数字结尾。

免责声明:我不是正则表达专家。

修改
编辑几次后,上面的代码变得有点太长了,所以我重写了这样:

function getTables(tableNumbers) {
    var tablesWeWant = [];
    for (var i = 0; i < tableNumbers.length; i++) {
        tablesWeWant.push(document.querySelector("#Table" + tableNumbers[i]));
    }
    return tablesWeWant;
}

第二种方法有效:http://jsfiddle.net/qQ7VT/1/