2013-08-05 123 views
1

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

注意:数字值将始终在字母后面的末尾,这意味着数字值永远不会出现在字母之间。 示例 -

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); 

任何拍摄方式?或更好的方法呢?

+0

这不行? /.*([0-9]+)$/ – MightyPork

+0

你总是知道那个字符串的alpha部分吗?如果是这样,你可以用''替换那个子字符串,其余的用'parseInt – Kuro

+0

@Kuro:不是,alpha部分是动态的。 –

回答

2

这是正则表达式是为做!

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 
+0

谢谢。这看起来不错,但/\d+$/.exec("abc")[0]通过错误。 因此需要在获取第一个元素之前检查null。 –

+1

可以是类似var number = /\d+$/.exec("abc“)? /\d+$/.exec("abc")[0]:“”; –

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”。

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); 
1

尝试使用正则表达式

var s = "gdgdfg45"; 
var matches = s.match(/\d+$/); 
console.log(matches[0]); 
相关问题