在某个索引之后找到indexOf字符

时间:2014-12-15 20:49:20

标签: javascript regex

非常基本,但我担心我忽略了一个简单的解决方案。我有以下字符串... IBAN: NL56INGB06716xxxxx ...

我需要帐号,所以我正在寻找indexOf("IBAN: "),但现在我需要在该索引之后找到下一个空格/空白字符。

我真的不认为我需要一个循环,但它是我能想到的最好的。正则表达式捕获组可能更好?我该怎么做?

2 个答案:

答案 0 :(得分:2)

来自MDN String.prototype.indexOf

  

str.indexOf(searchValue[, fromIndex])

     

fromIndex   可选。调用字符串中用于开始搜索的位置。它可以是任何整数。默认值为0

n.b。 .indexOf只会查找特定的子字符串,如果要从多个字符中选择,您需要循环并比较或使用 RegExp


亲切的榜样

var haystack = 'foo_ _IBAN: Bar _ _';
var needle = 'IBAN: ',
    i = haystack.indexOf(needle),
    j;
if (i === -1) {
    // no match, do something special
    console.warn('One cannot simply find a needle in a haystack');
}
j = haystack.indexOf(' ', i + needle.length);
// now we have both matches, we can do something fancy
if (j === -1) {
    j = haystack.length; // no match, set to end?
}
haystack.slice(i + needle.length, j); // "Bar"

答案 1 :(得分:1)

虽然你可以像Paul建议的那样传递一个起始索引,但似乎简单的正则表达式可能更容易。

var re = /IBAN:\s*(\S+)/

捕获组将在IBAN:

之后保留非空白字符序列
var match = re.exec(my_str)
if (match) {
    console.log(match[1]);
}