2017-09-15 42 views
2

,我有以下的字符串,如:如何從一個字符串只得到X號爲Array在Javascript

"Your number 2328681 is not in range [2428681 - 3328681]" 

我需要在列表或數組中的任何只有第二兩個數字24286813328681讓我分開閱讀它們。

搜索,我發現這個功能match()和試圖做後,以下:

var thestring = "Your number 2328681 is not in range [2428681 -3328681]" 
var numb = thestring.match(/\d/g); 
numb = numb.join("") 
alert(numb) 

或使用replace()

var thestring = "Your number 2328681 is not in range [2428681 -3328681]" 
var num = thestring.replace(/\D/g, ''); 
alert (num) 

在這兩種情況下,我得到"232868124286813328681"我不知道如何將它轉變成與最後兩個數字相似的列表,如[2428681, 3328681]

+0

使用捕獲組。 –

+0

如果你的數字是括號內**總是**,並且沒有其他的支架在任何地方,你甚至不需要正則表達式。 –

+0

是的,先生我的號碼總是在括號內 –

回答

1

你可以把所有的號碼,並slice結果,除去第一發現:

s = "Your number 2328681 is not in range [2428681 -3328681]"; 
 
g = s.match(/(-?\d+)/g); 
 
console.log(g); 
 
console.log(g.slice(1));

另一個選項,因爲你說過數字總是在方括號中,你可以使用這些信息:

s = "Your number 2328681 is not in range [2428681 -3328681]"; 
 
g = s.match(/\[(-?\d+).*?(-?\d+)\]/); 
 
console.log(g); 
 
console.log(g.slice(1));

+0

這有一個問題,它不會考慮'-'。 –

+1

將此添加到答案以及:) – Dekel

+0

這一個完美的作品!等待接受你的答案謝謝大家! –

1

試試這個:

var str = "Your number 2328681 is not in range [2428681 -3328681]"; 
var spl1 = str.split("[")[1].split(" ").map(it => parseInt(it)); 

最終結果:

enter image description here

+0

這是不行的,因爲你用'-'分開表示一個負數,如果兩者都是正數就會失敗。 –

+2

編輯完成後,我認爲這是最簡單和最好的解決方案 – Matus

+0

@AnteJablanAdamović謝謝,我已編輯 – Faly

0

你可以做

let str = "Your number 2328681 is not in range [2428681 -3328681]" 
 

 
let result = str.match(/\[(-?\d+) (-?\d+)\]/); 
 

 
if(result) 
 
    result.shift(); 
 
console.log(result);

1

下面是我會做,首先,我會將字符串拆分爲開放的括號。

functions(str){ 
    str.split("[") 
} 

再取最後一個元素,這將是你的兩個數字的字符串"2428681 -3328681]"

functions(str){ 
     str.split("[")[1] 
    } 

然後,剪掉的是,後支架

functions(str){ 
    var newstr = str.split("[")[1] 
    newstr = newstr.slice(0, -1) 
} 

然後,再次分裂,在空格,這應該給你最後的數組。因此,我們風與

functions(str){ 
    var newstr = str.split("[")[1] 
    newstr = newstr.slice(0, -1) 
    return newstr.split(" ") 
} 
1

另一種解決方案:

var thestring = "Your number 2328681 is not in range [2428681 -3328681]".match(/\[(.*?)\]/); 
 
console.log(thestring[1].split(" "))

相關問題