2012-02-08 124 views
0

我有這樣的JavaScript字符串:獲取字符串和數字用正則表達式

一些字符串27

,也可能是

一些字符串

串123

甚至

串23A - 或 - 線23a

所以,換句話說,它總是一個字符串。有時以數字結尾,有時不以。有時候這個號碼最後只有一個字母(只有一個)。

現在的問題是,我必須拆分這個字符串。我需要存儲在兩個變量中的字符串和數字(​​包括字母,如果有的話)。像:

一些字符串27

無功海峽= 「一些字符串」 變種數= 27;

我可能需要用正則表達式來做到這一點。但我不知道如何。

有人可以幫我解決這個問題嗎?

+0

如果它是'一些字符串27 A'你希望你的2個變量是什麼? – anubhava 2012-02-08 08:44:41

+0

@anubhava然後它應該仍然包含兩個變量。 *** var str =「一些字符串」***和*** var number =「27 A」*** – w00 2012-02-08 08:49:37

+0

well'「27 A」'不是一個真正的數字,您可以使用一些更好的命名變量pls: ) – anubhava 2012-02-08 08:51:54

回答

1

你應該使用這個表達式:

var arr = s.match(/^(\D+?)\s*(\d+(?:\s+[A-Z])?)$/i); 

然後使用:

var str = arr[1]; 
var number = arr[2]; 

假設s是包含原始文本的變量;

0

嘗試用以下的正則表達式:

/^([^\d]*)(\d+\s*[a-z]?)?$/i 
0

試試這個;

var r = new RegExp("/[0-9]+\w?/"); 
var s = "some letters 125a"; 
console.log(s.match(r)); 
1

你可以用函數來完成它:

function splitStringsNumbers(str) 
{ 
    return 
    { 
     Numbers: str.match(/[0-9]+/g) 
     Strings: str.match(/^[0-9]+/g) 
    } 
} 

現在這樣使用它:

var obj = splitStringsNumbers("string 23A") 
console.log(obj.Strings[0]); //print string 
console.log(obj.Numbers[0]); //print 23 
console.log(obj.Numbers[1]); //print A 

如果你想在2-14作爲數字變量, 你可以使用parseInt(str)。 此外,這種解決方案只適用於整數,與浮點數使用它(如字符串23.4A),你需要改變一點正則表達式。

1

根據你提供了什麼正則表達式應該是:

/(.*) (\d+ ?[A-Z]?)$/i 

什麼都可以串。 數字錨定到最後,它由單個空格與字符串分隔,最後的空格和字母是可選的。

var v='some string 27'; 
var arr = v.match(/(.*) (\d+ ?[A-Z]?)$/i); 
var str = arr[1]; 
var num = arr[2];