2

我有一个字符串“RowNumber5”,现在我想使用 Javascript 从该字符串中获取数值“5”。

注意:数字总是在字母之后,这意味着数字永远不会出现在字母之间。例子 -

 Result45 - Yes
 Result45Abc - Never

我可以通过这样的方式得到这个“5”

var t = "Ruby12";
var y = parseInt(t.split('').reverse().join(""));
if(!isNaN(y)) {
    y = y.toString().split('').reverse().join("");
}
else {
    y = "";
}
console.log(y);

有什么拍法吗?或更好的方法?

4

4 回答 4

3

这就是正则表达式的用途!

var matches = /\d+$/.exec("Ruby12");
matches[0];  //returns 12

var matches = /\d+$/.exec("sfwfewcsd098");
matches[0];  //returns 098

var matches = /\d+$/.exec("abc"); //matches returns null
于 2013-08-05T12:50:20.887 回答
1

这是一个正则表达式解决方案:

// input string
var t = "Ruby12";

var num = null;    
var match = t.match(/([0-9]+)$/);    
if(match!=null) num = parseInt(match[1]);

// num now contains null or number

// debug
console.log(num);
于 2013-08-05T12:49:43.473 回答
1

尝试使用这个正则表达式

var s = "gdgdfg45";
var matches = s.match(/\d+$/);
console.log(matches[0]);
于 2013-08-05T12:49:54.817 回答
0

我会采用分而治之的方法,处理所有可能包含数字的字符串:

var t = "Ruby12";
function get_numbers(str) {
    var parts = str.split(""), nums = "";
    for(var i = 0, len = parts.length; i < len; i++) {
        nums += (isNaN(parts[i])) ? "" : parts[i].toString();
    }
    return(nums);
}

var numbers = get_numbers(t);
alert(numbers);

这会给你“12”。

于 2013-08-05T12:43:28.710 回答