Как извлечь число из этой простой строки, используя RegExp в JavaScript? - PullRequest
1 голос
/ 08 августа 2010

Мне нужно извлечь число из следующей простой строки:

base:873

где часть "base:" является необязательной, то есть она может / не может существовать в строке.

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

P.S .: К сожалению, такая большая разница между другой реализацией Regular Expression и реализацией JavaScript.

ТИА, Мехди

ОБНОВЛЕНИЕ1:

Рассмотрим этот цикл:

for (var i = 0; i < 3; i++) {
    code = '216';

    var matches = /(bid:)?(\d+)/ig.exec(code);
    if (matches != null) {
        console.log('>>>' + matches[0]);
    }
    else {
        console.log('>>> no match');
    }
}

Обратите внимание, что переменная "code" устанавливается внутри цикла, только для целей тестирования. Однако удивительно то, что вышеупомянутый код печатает это:

>>>216
>>> no match
>>>216

Как это могло быть возможно ???

Ответы [ 2 ]

3 голосов
/ 08 августа 2010

Что ж, если base: является необязательным, вам не нужно об этом заботиться, не так ли?

\d+

- это все, что вам нужно.

result = subject.match(/\d+/);

будетвернуть (первое) число в строке subject.

Или вы имели в виду: сопоставлять число только в том случае, если оно является единственным в строке, или если ему предшествует base:?

В этом случае используйте ^(?:base:)?(\d+)$.

var match = /^(?:base:)?(\d+)$/.exec(subject);
if (match != null) {
    result = match[1];
}
0 голосов
/ 08 августа 2010

Попробуйте (base:)?(\d+)

Число будет во второй переменной захвата.

Альтернативно, заменить "base:" ни на что.

Или разделить на ':'.

Или что угодно.

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