5

我想通过 javascript/jquery 从以下字符串中提取数字:

"ch2sl4"

问题是字符串也可能如下所示:

"ch10sl4"

或这个

"ch2sl10"

我想将 2 个数字存储在 2 个变量中。有什么方法可以使用match它提取之前和之后的数字"sl"吗?match甚至是进行提取的正确功能吗?

谢谢

4

4 回答 4

11

match的,要走的路是:

var matches = str.match(/(\d+)sl(\d+)/);
var number1 = Number(matches[1]);
var number2 = Number(matches[2]);
于 2013-07-25T07:43:59.870 回答
8

如果字符串总是看起来像这样:"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]
于 2013-07-25T07:53:53.503 回答
2

作为替代方案,只是为了展示如何以多种不同的方式实现目标

var str = "ch2sl10";
var num1 = +(str.split("sl")[0].match(/\d+/));
var num2 = +(str.split("sl")[1].match(/\d+/));
于 2013-07-25T07:51:26.903 回答
-1

试试下面的代码

var tz = "GMT-7";
var tzOff = tz.replace( /[^+-\d.]/g, '');
alert(parseInt(tzOff));
于 2015-06-30T18:32:59.810 回答