2013-07-25 5 views
5

Я хотел бы, чтобы извлечь номера из следующей строки с помощью JavaScript/JQuery:Извлечение номера из строки с использованием JavaScript

"ch2sl4" 

проблема заключается в том, что строка может также выглядеть следующим образом:

"ch10sl4" 

или это

"ch2sl10" 

Я хотел бы хранить 2 номера в 2-х переменных. Есть ли способ использовать match, поэтому он извлекает номера до и после "sl"? Может ли match быть правильной функцией для извлечения?

Thx

ответ

10

Да, match это путь:

var matches = str.match(/(\d+)sl(\d+)/); 
var number1 = Number(matches[1]); 
var number2 = Number(matches[2]); 
+0

ТНХ, который был exactely то, что я искал! – FLuttenb

2

В качестве альтернативы, чтобы показать, как все может быть достигнуто многими различными способами

var str = "ch2sl10"; 
var num1 = +(str.split("sl")[0].match(/\d+/)); 
var num2 = +(str.split("sl")[1].match(/\d+/)); 
7

Если строка всегда будет выглядеть так: «ch [num1] sl [num2]», вы можете легко получить числа без регулярного выражения так:

var numbers = str.substr(2).split('sl'); 
//chop off leading ch---/\ /\-- use sl to split the string into 2 parts. 

В случае "ch2sl4", numbers будет выглядеть следующим образом: ["2", "4"], принуждать их к номерам, как так: var num1 = +(numbers[0]) или numbers.map(function(a){ return +(a);}.

Если струна части переменной, это все это одним махом:

var str = 'ch2fsl4'; 
var numbers = str.match(/[0-9]+/g).map(function(n) 
{//just coerce to numbers 
    return +(n); 
}); 
console.log(numbers);//[2,4] 
+0

THX для вашего ответа. Я полагал, что это возможно с 'split()' тоже. – FLuttenb

-1

Попробуйте ниже код

var tz = "GMT-7"; 
var tzOff = tz.replace(/[^+-\d.]/g, ''); 
alert(parseInt(tzOff)); 
+0

Пожалуйста, подумайте над тем, чтобы добавить хотя бы несколько слов, объясняющих, почему и как этот фрагмент кода отвечает на вопрос OP. –

+0

Это не отвечает на случай использования OP. Он будет извлекать только один номер для начала – WindsorAndy