RegEx获取具有相同索引的字符的并发行

时间:2014-01-20 19:53:03

标签: javascript regex

我有几行文字作为一个变量:

AAbcd
bAAcd
bcAAd
cbAAd
AbcdA
Abccd

OR

var str = "AAbcd\nbAAcd\nbcAAd\ncbAAd\nAbcdA\nAbccd"

我想得到两条线,其中“AA”出现在它们各自行的相同索引中,只要这些行是并发的。

第一行AAbcd的索引与第二行bAAcd不同,但不匹配。

第3行和第4行(bcAAdcbAAd)匹配,因为它们都从索引2开始并且是并发的。

这可以使用单个RegExp,还是需要javascript解决方法?

澄清

var i = RegExp(?).exec(str)的回复将是“AAd \ ncbAA”,我真的只对这个字符串的索引感兴趣,当然这将是i.index

1 个答案:

答案 0 :(得分:1)

以下是您问题的解决方案:

function findWithSameIndex(strings, toFind) {
    var results = {};

    for(var i = 0, length = strings.length; i !== length; i++) {
        var index = strings[i].search(toFind);

        if(index !== -1) {
            if(results[index] !== undefined) {
                return [results[index], i];
            } else {
                results[index] = i;
            }
        }
    }
    return null;
};

使用此功能,您可以执行所需的操作:

var strings = ["AAbcd", "bAAcd", "bcAAd", "cbAAd", "AbcdA", "Abccd"];

// two A in sequence
findWithSameIndex(strings, "AA");

// two characters in sequence
findWithSameIndex(strings, /(.)\1/);

我希望这会对你有所帮助。

相关问题