2013-08-05 122 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]); 
相關問題