string.search | количество попаданий - PullRequest
2 голосов
/ 02 июля 2011

Я ищу число в строке, используя строковый метод .search:

var myString = "20 fur bar 50";
alert(myString.search(/\d/);

Возвращает позицию первого числа: 0. Как я могу получить позицию второгочисло?Есть ли способ узнать, сколько хитов есть?

Ответы [ 3 ]

2 голосов
/ 02 июля 2011

Вместо этого используйте match и флаг g (глобальный).

jsFiddle .

Если вы не хотите сопоставлять цифры по отдельности,измените его на \d+.

jsFiddle .

0 голосов
/ 02 июля 2011

Если вы используете exec:

var myString = "20 fur bar 50";
var numberPositions = [];
var numberRe = /\d+/g;
for (var match; (match = numberRe.exec(myString));) {
  numberPositions.push(
      [numberRe.lastIndex - match[0].length, numberRe.lastIndex]);
}

, тогда numberPositions - это массив начальных (включительно), конечных (эксклюзивных) пар:

[[0,2],[11,13]]

[0,2] - диапазон символов (исключающий конец) для 20, а [11,13] - соответствующий диапазон для 50.

Используемое регулярное выражение /\d+/ вместо /\d/так что вместо получения отдельного диапазона для 2 и 0 вы получите один диапазон для целого числа.

0 голосов
/ 02 июля 2011

Как я могу получить позицию второго числа?

myString.indexOf (myString.match (/ \ d / g) [1])

Есть ли способ узнать, сколько хитов существует?

myString.match (/ \ d / g) .length

Конечно, у меня есть жестко закодированный индекс1 выше, вы должны сделать правильные проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...