Извлечение чисел из URL с использованием JavaScript? - PullRequest
0 голосов
/ 15 марта 2010
var exampleURL = '/example/url/345234/test/';
var numbersOnly = [?]

Участки пути /url/ и /test всегда будут одинаковыми.

Обратите внимание, что мне нужны цифры от /url/ до /test. В приведенном выше URL-адресе примером слова-заполнителя время от времени могут быть и цифры, но в этом случае они не должны совпадать. Только цифры от /url/ до /test.

Спасибо!

Ответы [ 3 ]

7 голосов
/ 15 марта 2010
var exampleURL = '/example/url/345234/test/';

// this will remove all non-numbers
var numbers = exampleURL.replace(/[\D]/g, '');

// or you can split the string and take only that 3rd bit
var numbers = exampleURL.split(/\//)[3];

// or match with a regex
var numbers = exampleURL.match(/\/(\d+)\/test\//)[1];
4 голосов
/ 15 марта 2010

Что-то вроде этого:

var result;
result = value.match(/\/url\/([0-9]+)\/test/);
// use result[1] to get the numbers (the first capture group)

Это зависит от /url/ и /test битов, поскольку вы сказали, что они надежны. В более общем случае это будет соответствовать первому разряду цифр в строке:

var result;
result = value.match(/[0-9]+/);
// use result[0] (not result[1]), which is the total match

Страница MDC с регулярными выражениями очень полезна.

Примечание: вместо [0-9] выше, вы можете использовать \d, что означает «цифра». Я не знаю, потому что мое регулярное выражение слабо, и я никогда не смогу его вспомнить (а когда я это сделаю, я никогда не смогу вспомнить, все ли это цифры или все не цифры [это \D - вы видите мое замешательство). Я нахожу [0-9] действительно ясным, когда читаю его позже. Другие могут найти \d более понятным, но мне нравится явная перечисленность диапазона.

1 голос
/ 15 марта 2010

регулярное выражение, которое будет работать это

matches = exampleURL.match('/\/.+\/url/([0-9]+)\/test\//');

Я думаю, что это правильно.

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