2013-04-06 17 views
1

我有這個字符串:如何子後,兩子之間找到子

字符串以兩個子:

srt=60389052 - OLGA YANETH PARRA PINILLA8390507 - VICENTE ARROYAVE ARANGO 

所以,我知道怎麼找到的第一個字符串(數字+字)第二:

w1 = srt.match (/^\d+\D+)/); //matches = 60389052 - OLGA YANETH PARRA PINILLA 


w2 = srt.match (/\d+\D+$/); //matches = 8390507 - VICENTE ARROYAVE ARANGO 

這很好,但如果字符串更不再是我有問題,匹配第二子,例如:

串三子:

srt=60389052 - OLGA YANETH PARRA PINILLA8390507 - VICENTE ARROYAVE ARANGO777777 GERMAN CASTRO 

我想找到這樣的:

8390507 - VICENTE ARROYAVE ARANGO

串有時只有兩個子和。有時候有三個,所以我必須總是找到第二個,不管字符串是否有2或3個子字符串,我的意思是如果我在較大的字符串中使用w2,不匹配我想要的子字符串,因爲會找到最後一個子字符串爲三,但不是第二個。

+0

是這些數字的長度是否一致? – Daniel 2013-04-06 14:20:40

+0

@Daniel nope ... – JuanFernandoz 2013-04-06 14:22:19

回答

3

做全球性的比賽,並得到你需要通過指數的子(從0開始):

var matches = str.match(/\d+\D+/g); 
console.log(matches[1]); // "8390507 - VICENTE ARROYAVE ARANGO" 
+0

謝謝我要去看看。 – JuanFernandoz 2013-04-06 14:47:31

+0

如何讓匹配表達式中的索引事物成爲可能? – JuanFernandoz 2013-04-06 14:53:26

+0

console.log(str.match(/ \ d + \ D +/g)[1]); - 假設可預測的輸入 – 2013-04-06 15:00:53

1

我知道正則表達式是不是最優雅,但由於JavaScript不支持回顧後,這可能不是那麼糟糕:

str.match(/^\d+\D+\d+\D+/)[0].replace(/^\d+\D+/,''); 

另外,如果你是不是在「匹配意圖() ' - 這也比上面更好:

str.replace(/\d+\D+(\d+\D+).*/,'$1'); 

乾杯。

0

您可以簡單地使用global flag

console.log(srt.match(/\d+\D+/g))